This service is a demonstrator of a wallet relying party, requesting credentials from wallets using OpenID for Verifiable Presentations.
It builds upon Signum and VC-K.
This service is intended for demonstration purposes, and makes no guarantees to be correct and/or complete. It should never be used in production systems. All contents subject to change. See A-SIT Plus Wallet for more information.
- The user opens the
index.html
page in their browser, on the mobile phone or their PC/laptop. - The
index.html
page creates aTransactionRequest
and sends it to theApiController
's/transaction/create
. In this demo, this request makes it possible to specify the parameters of the authentication: theurlprefix
of the user's wallet, as well as the requestedcredentialType
,representation
, andattributes
. - The
ApiController
answers with aTransactionResponse
, which includes an initialization URL and a QR code encoding the same URL. Both are shown on the page. - That URL can now be processed in several ways:
- App Wallet on another device: The user scans the QR code with the other device to open it's wallet.
- App Wallet on the same device: The user clicks the link to open the wallet app on the same device.
- Remote Wallet: The user clicks on the link to a remote wallet as a web-service in the same browser window (if no wallet app is installed on the same device).
- While the initialization URL was used to initiate the wallet authentication, the wallet has yet to obtain the actual authentication request. The wallet processes the initialization URL, extracts the encoded request URL (parameter
request_uri
, which maps toApiController
's/transaction/get/{id}
) and makes an request to that request URL. - The
ApiController
creates and returns an authn request according to the initially defined parameters (see step 2) by using theOidcSiopVerifier
. - The wallet processes the authn request and presents credentials to satisfy the request. This presentation step usually involves the user's consent, authentication to unlock keys and cryptographic operations to demonstrate ownership of the disclosed data. The generated authn response is sent to an URL specified in the authn request: the
ApiController
's/transaction/result/{id}
. - The
ApiController
processes and verifies the presented authn response by using theOidcSiopVerifier
. It stores the user's data in theUserStore
and forward's the user's browser to thesuccess.html
page. - The
success.html
page loads the data presented by the user via a call toApiController
's/api/single/{id}
. - The
ApiController
returns the user's data from theUserStore
, which is then shown on thesuccess.html
page.
This service uses Spring Boot, so one can start the service with ./gradlew bootRun
.
When deploying this service (i.e. executing the jar
produced by ./gradlew bootJar
), application.yml
may look like this:
app:
public-url: https://example.com/verifier
server:
port: 8080
servlet:
context-path: /verifier
forward-headers-strategy: framework