Live Demo
OpenID4VP behind a plain OAuth2 Authorization Code flow.
Most backends already know how to do OAuth2 Authorization Code. This gateway hides
the entire OpenID4VP request/response exchange with a wallet behind three endpoints
any OAuth client already understands — /authorize, /token
and /introspect — so you don't need a wallet integration to accept
verifiable credentials, only an OAuth client library you already have.
How this works
1. Authorize
Your app redirects the user's browser to GET /gateway/authorize, exactly like any OAuth2 provider.
2. Wallet exchange
The gateway takes over: it runs the full OpenID4VP request/response cycle with the user's wallet, entirely on its own screen.
3. Redirect back
Once the wallet responds, the browser is sent back to your redirect_uri with a normal authorization code.
4. Token
Your backend exchanges the code at POST /gateway/token for an opaque access token — RFC 6749, section 4.1.3.
5. Introspect
Call POST /gateway/introspect with that token to get back whatever the wallet disclosed — no OpenID4VP parsing required.
Try it
This page acts as a demo OAuth client, pre-registered with the gateway below. Click through and you'll go through the exact same wallet exchange as the live OpenID4VP demo, then land back here with an access token already exchanged and introspected.
client_id: demo-clientclient_secret: demo-secret-change-me
You'll need the latest EUDI Wallet reference app (Android) installed, with a test PID already loaded (see the live demo for how to get one).
In a real integration, everything from "Token" onward happens server-side, and the client_secret above would never be published or reach a browser. It's public on this page purely so this demo can run entirely client-side.