kimealabs / symfony-eudi-wallet-bundle
Symfony bundle for EUDI Wallet integration (eIDAS 2.0) — Relying Party, Issuer, Security Authenticator
Package info
github.com/Kimealabs/symfony-eudi-wallet-bundle
Type:symfony-bundle
pkg:composer/kimealabs/symfony-eudi-wallet-bundle
Requires
- php: >=8.3
- endroid/qr-code: ^5.0
- spomky-labs/cbor-php: ^3.0
- symfony/cache: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/http-client: ^7.0
- symfony/security-bundle: ^7.0
- web-token/jwt-framework: ^3.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.10
- phpstan/phpstan-symfony: ^1.3
- phpunit/phpunit: ^11.0
- symfony/phpunit-bridge: ^7.0
README
The first PHP/Symfony bundle for EUDI Wallet integration (eIDAS 2.0).
No PHP implementation exists today for OpenID4VP or OpenID4VCI. This bundle fills that gap.
What it does
The bundle lets any Symfony application act as a Relying Party — a service that requests and verifies identity credentials from a user's EUDI Wallet (e.g. France Identité).
# config/packages/eudi_wallet.yaml eudi_wallet: relying_party: client_id: "https://myservice.example.com" redirect_uri: "https://myservice.example.com/wallet/callback" trusted_issuers_list_uri: "https://verifier.eudiw.dev/trusted-issuers"
// Generate a presentation request (QR code or deeplink) $request = $verifier->createPresentationRequest(['family_name', 'given_name', 'age_over_18']); return $this->render('login.html.twig', ['qr' => $request->toQrCode()]); // Verify the response from the wallet $identity = $verifier->verify($request); $identity->getFamilyName(); // "Dupont" $identity->isAgeOver18(); // true
Features
Phase 1 — Relying Party (in development)
- OpenID4VP Authorization Request generation
- QR code & deeplink (same-device / cross-device)
- VP Token verification (SD-JWT)
- VP Token verification (mDoc / ISO 18013-5)
- Nonce & state management
- EU Trusted Issuers List integration
Phase 2 — Symfony Security integration
- Native
security.yamlauthenticator - User provider from wallet claims
- Selective disclosure attribute mapping
Phase 3 — Issuer (planned)
- OpenID4VCI credential offer
- SD-JWT credential issuance
- Credential status list (revocation)
Installation
composer require kimealabs/symfony-eudi-wallet-bundle
Requires PHP 8.3+ and Symfony 7.x.
Compatibility
| Component | Protocol | Format |
|---|---|---|
| Relying Party | OpenID4VP | SD-JWT, mDoc |
| Issuer | OpenID4VCI | SD-JWT |
| Trust | EU ARF | Trusted Issuers List |
Tested against the France Identité Playground.
Why this bundle?
eIDAS 2.0 requires all EU Member States to provide a digital identity wallet by end of 2026. France is deploying France Identité to 5M+ users. Every Symfony service that needs identity verification will need this integration.
Today, implementations exist in Java, Kotlin, Swift, Go and TypeScript. Nothing in PHP. This bundle is the missing piece for the Symfony ecosystem.
Contributing
The project is in early development. Issues, feedback and PRs are very welcome.
git clone https://github.com/Kimealabs/symfony-eudi-wallet-bundle
cd symfony-eudi-wallet-bundle
composer install
License
MIT — see LICENSE.