For the complete documentation index, see llms.txt. This page is also available as Markdown.

Summary & Next Steps

What You Achieved:

  • Deployed an Issuer and Verifier using the One-Click Deployment platform, and authenticated to their APIs with an OIDC Authorization: Bearer <token> header (using AUTH_DISABLED=true as the local-development shortcut).

  • Created a versioned credential schema and assigned it to your Issuer, producing the credential configuration ids your Issuer can advertise (for example [email protected]:sd-jwt).

  • Issued a "KYC Verifiable Credential" by creating an OpenID4VCI credential offer and claiming it into a wallet — in SD-JWT VC format, so the holder can selectively disclose individual claims.

  • Verified that credential with an OpenID4VP authorization request that declares which claims it needs, then read the result from the verification session once the holder presented a matching credential.

  • Built a frontend that lets users request a credential, scan the offer QR code, and later present their credential to unlock a protected dashboard.

  • Displayed the verified, selectively disclosed credential data on that protected dashboard.

Next Steps:

  • Try selective disclosure. Add or adjust the disclosureFrame on your schema (or the disclosureFrame on a direct sign request) so a holder can reveal only age without exposing first_name or last_name.

  • Switch the credential query. Authorization requests accept either a DIF Presentation Exchange presentationDefinition (as this tutorial sends, paired with version: "v1.draft24") or a DCQL dcqlQuery (works with the default version: "v1"). Note DCQL cannot express numeric ranges like age >= 18 — with DCQL your app checks the disclosed value itself.

  • Require a PIN on offers. Set requirePin: true when creating a credential offer to add a pre-authorized-code PIN that the holder must enter before claiming.

  • Issue a different format. The same schema can produce both :sd-jwt and :jwt-vc-json credential configuration ids — try issuing a JWT-VC-JSON credential alongside the SD-JWT VC one.

  • Experiment with schemas and conditions. Define new schemas with different claims and stricter verification requirements, then use the verified credential data to offer personalized experiences in your application.

You now have a solid understanding and a working example of SSI credential issuance and verification within the Empeiria ecosystem.

Last updated