Overview
The VCVerifier provides two versions of QR code presentation endpoints for initiating the SIOP (Self-Issued OpenID Provider) authentication flow. These endpoints return rendered HTML pages containing QR codes that users can scan with their credential wallets.Version 2 (
/api/v2/loginQR) includes additional features like WebSocket support for real-time updates and QR code expiration handling.V2 Login QR (Recommended)
Endpoint
Description
Returns a rendered HTML page with a QR code that encodes the login starting point for the SIOP flow. The QR code contains an OpenID URL like:Query Parameters
Session state identifier used to maintain state between the request and callback.Example:
274e7465-cc9d-4cad-b75f-190db927e56aThe identifier of the client/service that intends to start the authentication flow. Used to retrieve the scope and trust services for verification.Example:
packet-delivery-portalThe URI to redirect to after authorization is complete.Example:
https://my-app.com/redirectURI pointing to a JWT request object containing the authorization request parameters. When provided, parameters are extracted from the request object.Example:
https://my-app.com/request.jwtThe scope of the access request. Defines what credentials or permissions are being requested.Example:
openidA unique string value used to associate a client session with an ID Token and to mitigate replay attacks.Example:
274e7465-cc9d-4cad-b75f-190db927e56aMode to be used for the authorization request.Enum:
urlEncoded | byValue | byReferenceDefault: byReferenceResponse
200 - Success
Returns a rendered HTML page containing:- The QR code for scanning
- WebSocket URL for real-time updates
- QR code expiration timestamp
- Authentication request details
text/html400 - Bad Request
Returned when required parameters are missing or invalid.Error summary message.
Detailed error description.
Examples
V1 Login QR (Legacy)
Endpoint
Description
Legacy version of the QR code presentation endpoint. Returns a simpler HTML page with a QR code for the SIOP flow.Query Parameters
Session state identifier.Example:
274e7465-cc9d-4cad-b75f-190db927e56aEndpoint of the client to receive the JWT.Example:
https://my-portal.com/auth_callbackThe identifier of the client/service initiating the authentication flow.Example:
packet-delivery-portalUnique string value for session association and replay attack mitigation.Example:
274e7465-cc9d-4cad-b75f-190db927e56aMode to be used for the authorization request.Enum:
urlEncoded | byValue | byReferenceDefault: byReferenceResponse
200 - Success
Returns a rendered HTML page containing the QR code.text/html400 - Bad Request
Error summary message.
Detailed error description.
Examples
Common Errors
| Error Code | Summary | Details |
|---|---|---|
| 400 | no_state_provided | Authentication requires a state provided as query parameter. |
| 400 | NoCallbackProvided | A callback address has to be provided as query-parameter. (V1 only) |
| 400 | no_redirect_uri_provided | Token requests require a redirect_uri. (V2 when no request_uri) |
| 400 | no_nonce_provided | Authentication requires a nonce provided as a query parameter. (V2 only) |
| 500 | qr_generation_error | An error occurred while generating the QR code. |
| 500 | unresolvable_request_object | Was not able to get the request object from the client. |
| 500 | invalid_audience | Audience of the request object was invalid. |
Implementation Notes
Request URI Support (V2)
When using therequest_uri parameter:
- The endpoint fetches the JWT request object from the provided URI
- Parameters are extracted from the request object
- The audience (
aud) in the request object must include the verifier’s host - Extracted parameters override query parameters
Request Modes
- byReference (default): The request is passed by reference via a URI
- byValue: The complete request object is included in the QR code
- urlEncoded: Parameters are URL-encoded in the QR code