Component View - SSI-Solutions/vcms GitHub Wiki
Diagram
Public Services
Connector
This component exposes a public API for triggering the connection process between the VCMS cloud agent and any other SSI agents. It uses the Aries Facade API.
The connector is Spring Boot web-application. Its only state is persisted in its own relational database.
The connector has a rabbitmq listener to catch and process connection events coming from the cloud agent.
Issuer
This component exposes a public API for triggering the issuing process between the VCMS cloud agent and any other SSI agents. It depends on the Aries Facade API.
The issuer is a Spring Boot web-application. Its only state is persisted in its own relational database.
The issuer has a rabbitmq listener to catch and process credential exchange events coming from the cloud agent.
Verifier
This component exposes a public API for triggering the verification process between the VCMS cloud agent and any other SSI agents.
It depends on the Aries Facade API.
The verifier is a Spring Boot web-application. Its only state is persisted in its own relational database.
The verifier has a rabbitmq listener to catch and process presentation exchange events coming from the cloud agent.
Cloud Agent
Aries Facade
This component exposes all the required methods of the SSI cloud wallet to the public services. Its main purpose is to decouple the specifics (controllers and DTOs) of ACA-PY from the VCMS public services issuer, connector, verifier. The facade contract has no dependencies to ACA-PY. The Aries Facade provides a local REST endpoint and consumes ACA-PY APIs.
The idea is that switching the OSS agent comes with minimal costs to the rest of the VCMS implementation.
The Aries Facade is a stateless Spring Boot component with no public exposure.
Webhook
This component provides an implementation of the ACA-PY webhook API. It receives notifications from ACA-PY, converts them to our own objects, and sends notifications with those objects to the VCMS message queue. These are then consumed by different listeners of the public services.
The webhook is a stateless Spring Boot web-application without any public exposure.
Tails Server
The tails-server is required for issuing credentials that can be revoked. The tails-server will receive requests from ACA-py to store and download tails files.
The url you use for the --tails-server-base-url will be used in the revocation registry definition transactions in the ledger, so agents can download the tails-file to verify presentation proofs.
If holders are mobile iOS or Android apps, the URL must use SSL (e.g. must be https:) due to the restrictions in those OS's.