OpenID for Verifiable Presentations (EUDI wallet, eIDAS 2.0) (v6.6)

pac4j-openid4vp provides an OpenID4VP client for Java: it allows you to authenticate users with a digital wallet, using the OpenID for Verifiable Presentations protocol. Your application acts as a verifier: it asks the wallet to present credentials, such as the person identification data of the European Digital Identity wallet (EUDI wallet).

Requires a wallet compatible with OpenID4VP 1.0 final. Earlier drafts using client_id_scheme or presentation_definition are not supported.

1) Dependency

You need to use the following module: pac4j-openid4vp.

Example (Maven dependency):

<dependency>
    <groupId>org.pac4j</groupId>
    <artifactId>pac4j-openid4vp</artifactId>
    <version>${pac4j.version}</version>
</dependency>

OpenID4VP shares the OAuth vocabulary with OpenID Connect (client_id, nonce, signed request objects), but the wallet presents credentials directly to the application: there is no token endpoint or user info endpoint, and the module does not depend on pac4j-oidc.

Each credential verifier also needs an optional library, not included by default: add the one of the verifier you use, as described for the SD-JWT VC verifier and the mdoc verifier.

2) The protocol, briefly

Choose a client for a wallet opened by URL or QR code, or through the browser’s Digital Credentials API. Requests are signed and responses encrypted by default. Configure trusted issuers and credential validation before accepting presentations.

3) The EUDI wallet: ARF and HAIP

The European Digital Identity wallet (EUDI wallet) is part of the eIDAS 2.0 framework. Its Architecture and Reference Framework (ARF) uses the High Assurance Interoperability Profile (HAIP) 1.0 to define its OpenID4VP requirements.

Use EudiWalletClient for the EUDI PID profile:

Use OpenId4VpClient if the wallet requires different settings, such as x509_san_dns, or for credentials other than the PID. See Clients and configuration.

SD-JWT VC and mdoc validation are provided through optional libraries. Selecting EudiWalletClient does not provide a complete EUDI trust or status validation setup: see Configuring credential verifiers.

4) Usage