Architektur & Setup

Docs

Standards

  • · OID4VCI Draft 15 Pre-Authorized Code Flow
  • · OID4VP Draft 24 direct_post mit signiertem Request-Object
  • · SD-JWT VC (vc+sd-jwt) mit selective disclosure
  • · did:jwk · ES256 · Key-Binding-JWT für Holder-Auth
  • · StatusList 2021-Bitstring für Revocation

Endpoints (öffentlich, CORS *)

  • GET
    /api/public/.well-known/openid-credential-issuer
  • GET
    /api/public/.well-known/jwt-vc-issuer
  • GET
    /api/public/oid4vci/credential-offer/$id
  • POST
    /api/public/oid4vci/token
  • POST
    /api/public/oid4vci/credential
  • GET
    /api/public/oid4vci/status/$listId
  • GET
    /api/public/oid4vp/request/$id
  • POST
    /api/public/oid4vp/response/$id
  • GET
    /api/public/oid4vp/result/$id

End-to-End-Test mit Sphereon Wallet

  1. 1. Projekt publishen — Sphereon braucht eine echte HTTPS-URL, kein localhost.
  2. 2. Im Issuer-Dashboard ein Event + Ticket anlegen, „Offer & QR" klicken.
  3. 3. Sphereon Wallet öffnen → Scan-Button → QR scannen → Ticket annehmen.
  4. 4. Im Verifier ein Request erstellen, am Telefon scannen → Policy-Result erscheint.

Policy-Engine

Jede Präsentation wird gegen 6 Regeln geprüft:

  • · issuer_trusted
  • · not_expired
  • · not_revoked (StatusList-Bit)
  • · block_allowed
  • · transfer_within_limit
  • · holder_binding (cnf.jwk + KB-JWT-Signatur)

Bekannte Demo-Limits

  • · Issuer-Keys liegen in der DB, nicht im HSM.
  • · Trust-Liste ist single-issuer (der lokale Issuer).
  • · StatusList wird als signiertes JWT geliefert, aber ohne Crypto-Kette publiziert.
  • · Kein DPoP, kein Replay-Schutz auf Token-Endpoint.