Qu'est-ce qu'OpenID4VP ?
OpenID for Verifiable Presentations (OpenID4VP) est le protocole qui permet aux portefeuilles d'identité numérique européens de partager des attributs d'identité vérifiés avec les entreprises, appelées Relying Parties. C'est l'épine dorsale technique du flux de vérification d'identité eIDAS 2.0.
Quand un utilisateur scanne un QR code au moment du paiement et que son portefeuille renvoie "cette personne a plus de 18 ans", cet échange passe par OpenID4VP.
Le flux de vérification
Le flux OpenID4VP implique quatre acteurs :
- Émetteur : l'autorité publique ou de confiance qui a émis le justificatif (par exemple l'État autrichien pour une carte d'identité nationale)
- Titulaire : le citoyen qui possède le portefeuille EUDI sur son téléphone
- Vérificateur (Relying Party) : l'entreprise qui demande la vérification (votre boutique en ligne, votre système KYC, etc.)
- Cadre de confiance : les listes de confiance de l'UE qui établissent quels émetteurs et quels vérificateurs sont légitimes
Le flux étape par étape
1. Le vérificateur crée une Authorization Request
↓
2. La requête est encodée dans un QR code (ou un deep link)
↓
3. Le titulaire scanne le QR code avec son portefeuille EUDI
↓
4. Le portefeuille analyse la requête et affiche ce qui est demandé
↓
5. Le titulaire examine et approuve avec biométrie/PIN
↓
6. Le portefeuille crée une Verifiable Presentation (VP)
↓
7. La VP est envoyée au point de réponse du vérificateur
↓
8. Le vérificateur valide cryptographiquement la VP
↓
9. Les attributs vérifiés sont extraits et utilisés
Deux formats de justificatifs
Les portefeuilles EUDI prennent en charge deux formats de justificatifs, chacun avec son propre chemin de vérification cryptographique :
SD-JWT VC (Selective Disclosure JWT)
Utilisé pour les flux de vérification à distance (en ligne, multi-appareils). Le justificatif est un JSON Web Token avec capacités de divulgation sélective.
- Format : basé sur JSON
- Divulgation sélective : salage fondé sur des hachages ; l'émetteur signe toutes les claims, mais le titulaire ne révèle que celles qu'il choisit
- Signature : JWS (JSON Web Signature) avec ES256
- Vérification : analyse du JWT -> reconstruction des disclosures -> vérification des hachages -> validation de la signature -> contrôle de la chaîne de confiance de l'émetteur
Header.Payload.Signature~Disclosure1~Disclosure2~KeyBindingJWT
mdoc / mDL (Mobile Document)
Utilisé pour les flux de vérification de proximité (présentiel, NFC, BLE). Il repose sur la norme ISO 18013-5.
- Format : basé sur CBOR (binaire)
- Divulgation sélective : intégrée à la structure des données, avec espaces de noms et éléments de données
- Signature : COSE (CBOR Object Signing and Encryption)
- Vérification : décodage CBOR -> vérification de la signature COSE -> validation de l'authentification du dispositif -> contrôle de la chaîne de certificats de l'émetteur
Les deux formats atteignent le même objectif : prouver cryptographiquement qu'un émetteur de confiance a attesté certaines informations sur le titulaire, mais via des chemins techniques fondamentalement différents.
WRPAC : le certificat du vérificateur
Pour émettre une demande de vérification, la Relying Party a besoin d'un WRPAC (Wallet Relying Party Access Certificate). Ce certificat, défini dans ETSI TS 119 475 :
- identifie la Relying Party auprès du portefeuille
- précise quels attributs la RP est autorisée à demander
- est délivré par un prestataire de services de confiance qualifié
- doit être validé par rapport aux listes de confiance de l'UE
Le portefeuille vérifie le WRPAC avant d'afficher l'écran de consentement. Si le certificat est invalide, expiré ou absent de la liste de confiance, le portefeuille refuse la requête.
Les listes de confiance de l'UE
L'UE maintient une infrastructure de confiance hiérarchique :
EU List of Trusted Lists (LOTL)
└── Country Trusted List (ex. Luxembourg)
└── Trust Service Provider (ex. LuxTrust)
└── Trust Service (ex. émission de WRPAC)
└── Certificate (votre WRPAC)
Le SDK doit parcourir cette hiérarchie pour vérifier qu'un certificat WRPAC a bien été délivré par un prestataire légitime dans un État membre reconnu. C'est l'une des parties les plus complexes de l'implémentation : le format des trust lists (XML/JSON) a ses propres contraintes de parsing, et les listes sont mises à jour indépendamment par chaque État membre.
Privacy by design
OpenID4VP impose la confidentialité au niveau du protocole :
- Divulgation sélective : le titulaire choisit exactement les attributs à partager. Demander
age_over_18ne révèle pas la date de naissance. - Absence de corrélation : chaque session de vérification utilise du matériel cryptographique frais, ce qui empêche les vérificateurs de relier les sessions entre elles.
- Consentement du titulaire : chaque demande d'attribut nécessite une approbation explicite de l'utilisateur sur son appareil.
- Minimisation des données : le protocole encourage à ne demander que le strict nécessaire. L'interface du portefeuille rend visible toute demande excessive.
Cela diffère fondamentalement du KYC traditionnel, où les entreprises reçoivent souvent, puis stockent, davantage de données que nécessaire.
Comment OpenEUDI implémente cela
Le SDK OpenEUDI masque la complexité du protocole derrière une API simple :
import { createVerifier } from '@openeudi/core';
const verifier = createVerifier({
mode: 'production',
wrpac: {
certificate: process.env.WRPAC_CERT,
privateKey: process.env.WRPAC_KEY,
},
trustList: {
lotlUrl: 'https://ec.europa.eu/tools/lotl/eu-lotl.xml',
refreshInterval: 86400, // 24 heures
},
});
En interne, le SDK :
- construit une Authorization Request conforme à la spécification
- l'encode en QR code avec un style configurable
- prépare un point de réponse pour recevoir la VP du portefeuille
- valide la VP avec le bon gestionnaire de format (SD-JWT ou mdoc)
- vérifie le certificat de l'émetteur par rapport aux listes de confiance de l'UE
- extrait et renvoie uniquement les attributs demandés
- nettoie le matériel cryptographique présent en mémoire
Tout cela se passe derrière verifier.createSession() et session.onVerified().
Conformité transfrontalière
Chaque État membre de l'UE conserve une certaine marge de manoeuvre sur les attributs pouvant être demandés et sur les conditions applicables. Par exemple :
- les seuils de vérification d'âge varient selon les catégories de produits et les pays
- certains pays restreignent la divulgation de certains attributs
- les implémentations nationales de portefeuilles peuvent utiliser des schémas de justificatifs différents
OpenEUDI inclut une cartographie de conformité lisible par machine (JSON) pour les 27 États membres, afin que les développeurs puissent vérifier la disponibilité des attributs avant d'émettre une demande.
Les prochaines évolutions du protocole
La spécification OpenID4VP continue d'évoluer dans le groupe de travail de l'OpenID Foundation. Parmi les chantiers actifs :
- Presentation Exchange 2.0 : des façons plus souples de décrire quels justificatifs sont acceptables
- Status assertions : vérification en temps réel de la révocation des justificatifs
- Améliorations des flux multi-appareils : meilleure UX pour la vérification mobile-vers-desktop
- Batch verification : vérification de plusieurs justificatifs dans un même flux
OpenEUDI suivra ces changements via un modèle d'adaptateurs de protocole versionnés, afin de garder l'API publique stable tout en mettant à jour les gestionnaires internes au rythme de la spécification.
OpenEUDI implémente OpenID4VP pour l'écosystème des portefeuilles EUDI. Le SDK est sous licence MIT et gratuit. Pour les déploiements en production avec des certificats WRPAC managés, consultez les offres managées d'eIDAS Pro.
Articles similaires
Démarrage rapide du SDK OpenEUDI : votre première vérification en 5 minutes
Un tutoriel pas à pas pour installer le SDK OpenEUDI, créer une session de vérification et traiter le résultat, le tout en moins de 5 minutes avec le mode DEMO.
6 min de lecture
Comment fonctionne la vérification eIDAS : analyse technique approfondie
Une analyse technique complète du flux de vérification eIDAS, de la génération du QR code à la validation des attributs, avec les protocoles, les mesures de sécurité et les modèles d'intégration.
12 min de lecture
Partager cet article
Aidez les autres à en savoir plus sur la vérification eIDAS