Publié le 3 octobre 2025
Nous avons le plaisir de vous annoncer que l'API Digital Credentials est désormais activée par défaut à partir de Chrome 141. iOS 26 ajoute également la prise en charge de l'API Digital Credentials à Chrome et à d'autres navigateurs. Cette API apporte un nouveau niveau de sécurité et de confidentialité à la validation de l'identité sur le Web. Elle permet aux sites Web de demander et de recevoir des informations vérifiables auprès des utilisateurs de manière standardisée.
Après un Origin Trial réussi, l'API Digital Credentials prend désormais en charge la présentation d'identifiants sur le même appareil sous Android et la présentation multi-appareils sur Chrome pour ordinateur.
Arrière-plan
La validation de l'identité en ligne est jusqu'à présent un processus complexe, qui nécessite souvent que les utilisateurs importent des scans de leurs pièces d'identité. Cette pratique implique souvent de partager plus de données que nécessaire, ce qui soulève d'importantes préoccupations concernant la confidentialité pour les utilisateurs. Pour les développeurs, cela crée également un risque, car ils doivent s'assurer que leur solution est capable de traiter et de stocker des données sensibles souvent non uniformes de manière sécurisée et respectueuse de la confidentialité.
Dans le même temps, des réglementations comme eIDAS 2.0 obligent les gouvernements à fournir des moyens d'identification numérique au public. Ces portefeuilles d'identité numérique doivent pouvoir contenir divers identifiants, y compris une preuve d'identité et d'âge. Les fournisseurs de services en ligne peuvent demander ces identifiants pour valider l'identité des utilisateurs.
Consciente du potentiel des identifiants numériques pour répondre à la fois aux exigences des utilisateurs en matière de confidentialité et aux besoins des développeurs pour valider les données utilisateur, la communauté des normes Web du W3C a développé une solution : l'API Digital Credentials. L'API Digital Credentials vise à résoudre ce problème en introduisant une interface intégrée pour valider les informations utilisateur, ce qui améliore la sécurité, la confidentialité et l'expérience utilisateur par rapport aux alternatives. Grâce à cette API, les utilisateurs n'ont plus besoin d'importer des documents sensibles tels que des scans de pièces d'identité sur plusieurs sites Web. Au lieu de cela, les sites Web peuvent gagner la confiance de leurs utilisateurs en ne demandant que les données spécifiques et signées de manière cryptographique dont ils ont besoin auprès d'émetteurs de confiance.
Fonctionnalités essentielles
L'API Digital Credentials repose sur trois principes fondamentaux : la confidentialité, la compatibilité multiplate-forme et la normalisation.
Confidentialité
L'API Digital Credentials améliore la confidentialité et la sécurité en ligne. Il permet aux utilisateurs de présenter une pièce d'identité numérique depuis leur portefeuille mobile aux sites Web pour vérifier des informations spécifiques sans divulguer les données sensibles sous-jacentes. Par exemple, l'API peut vérifier qu'un utilisateur a plus de 18 ans sans révéler sa date de naissance complète. Ce principe de "divulgation sélective" garantit que les sites Web ne reçoivent que le minimum d'informations nécessaires.
L'API Digital Credentials est également compatible avec les protocoles preuves à divulgation nulle de connaissance (ZKP), tels que Longfellow ZK de Google, qui garantissent la confidentialité des utilisateurs en renvoyant une preuve cryptographique qu'une certaine assertion d'identité est vraie sans révéler d'autres informations.
Une compatibilité multiplate-forme
L'API Digital Credentials vise à prendre en charge différentes plates-formes afin que les utilisateurs puissent présenter facilement des informations validées sur différents appareils.
Sur Android : fournit une interface utilisateur intégrée, permettant aux utilisateurs de sélectionner des identifiants dans leur application de portefeuille installée.
Sur ordinateur : les utilisateurs peuvent présenter des identifiants depuis leur portefeuille mobile à un site Web dans leur navigateur pour ordinateur. En scannant un code QR, le système établit une connexion sécurisée, chiffrée de bout en bout et résistante au hameçonnage entre l'ordinateur et l'appareil mobile. Cette connexion utilise le protocole CTAP pour vérifier la proximité de l'utilisateur via BLE, en s'assurant qu'il est physiquement présent et qu'il contrôle les deux appareils.
Standardisation
L'interopérabilité est essentielle. Dans Chrome, l'API Digital Credentials est indépendante de la plate-forme de protocole et est compatible avec divers protocoles de présentation, par exemple OpenID4VP et l'annexe C de la norme ISO 18013-7. Apple a également introduit la compatibilité avec l'API Digital Credentials à partir de Safari 26.0.
De plus, l'API Digital Credentials s'appuie sur la gestion des identifiants intégrée à Android et sur un écosystème croissant de portefeuilles compatibles. Google Wallet est un pionnier, et Samsung Wallet et 1Password seront bientôt compatibles.
Quelles sont les nouveautés depuis la phase d'évaluation ?
Si vous avez participé à notre précédente phase d'évaluation de l'origine, vous remarquerez que l'API Digital Credentials est passée de navigator.identity.get()
à navigator.credentials.get()
. Cela permet de l'aligner sur l'effort plus large d'unification des identités avec l'API Credential Management.
De plus, le paramètre providers
a été renommé requests
, et request
a été renommé data
.
Implémentation
L'intégration de l'API Digital Credentials comporte deux étapes principales : la détection de la fonctionnalité et la demande d'identifiant. Les développeurs doivent également implémenter une logique personnalisée pour déterminer si leur application peut utiliser les identifiants.
Détection des fonctionnalités
Avant d'afficher un bouton "Valider avec une pièce d'identité numérique", vérifiez si l'API Digital Credentials est disponible dans le navigateur de l'utilisateur.
if (typeof DigitalCredential !== "undefined") {
// Digital Credentials API is supported
} else {
// Digital Credentials API is not supported
}
Demander un identifiant
Pour demander un identifiant, vous devez appeler navigator.credentials.get()
avec un paramètre digital
. Dans le type d'identifiant numérique, ajoutez un tableau requests
contenant DigitalCredentialGetRequest avec les paramètres de base suivants :
protocol
: spécifiez un protocole d'échange avec une chaîne. Par exemple,"openid4vp"
ou"org-iso-mdoc"
. Détectez si le protocole est pris en charge par le navigateur comme suit :if (DigitalCredential.userAgentAllowsProtocol("example-protocol")) { // Create a request with this protocol } else { // Protocol is not supported }
data
: objet contenant les paramètres acceptés par les applications de portefeuille numérique pour le protocole spécifié. Pour"openid4vp"
, les paramètres sont définis dans OpenID for Verifiable Presentation (OID4VP) pour la spécification de l'API W3C Digital Credentials.try { const digitalCredential = await navigator.credentials.get({ digital: { requests: [{ protocol: "openid4vp-v1-unsigned", data: { response_type: "vp_token", nonce: "[some-nonce]", client_metadata: {...}, dcql_query: {...} } }] } }); // Decrypt payload respons and verify credentials on the backend const response = await fetch("/verify", { method: "POST", body: JSON.stringify(digitalCredential.data), headers: { 'Content-Type': 'application/json' } }); } catch (e) { // Handle errors, such as the user canceling the request console.error(e); }
Par exemple, pour demander le nom de famille et le prénom d'un utilisateur, ainsi qu'une valeur booléenne indiquant si l'utilisateur a plus de 21 ans, vous pouvez spécifier la charge utile suivante :
{
protocol: 'openid4vp-v1-unsigned',
data: {
response_type: 'vp_token',
nonce: '[some-nonce]',
// Contains the Verifier metadata values, including supported credential formats and response encryption public key
client_metadata: {
// Supported credential formats. Refer to the documentation for specific values
vp_formats_supported: {...},
// Public key(s). Refer to the documentation for more detail.
jwks: {...}
},
dcql_query: {
// A wallet will try to find credentials it holds that match these definitions.
credentials: [
{
// A locally unique identifier for this credential definition within the query.
id: "cred_vc",
format: "dc+sd-jwt",
meta: {
// 'vct_values' specifies the Verifiable Credential allowed type.
// In this case, it's a European Digital Identity (EUDI) Personal Identification Data (PID) credential.
vct_values: [
"urn:eudi:pid:1"
]
},
// 'claims' is an array of specific data that's being requested.
claims: [
{
// The path ["age_equal_or_over", "18"] corresponds to accessing `credential.age_equal_or_over['18']`.
path: [
"age_equal_or_over",
"18"
]
}
]
}
]
}
}
}
Dans cet exemple, client_metadata
doit spécifier une liste de formats compatibles. Reportez-vous aux spécifications pour connaître les valeurs utilisables. La valeur jwks
facultative définie dans client_metadata
doit contenir les clés publiques utilisées pour le chiffrement de la réponse. Vous pouvez également consulter le code de démonstration pour obtenir d'autres exemples.
Voici un exemple de charge utile de réponse chiffrée d'objet DigitalCredential :
{
// This is an example for a response using an OpenID4VP protocol.
// The format of the 'data' object will differ for other protocols.
"protocol": "openid4vp-v1-unsigned",
"data": {
// To decrypt this JWE payload, use the private key.
// The decrypted payload will be a JSON object containing the
// Verifiable Presentation in the 'vp_token' claim.
"response": "[jwe-token]"
}
}
Dans cet exemple, le système demande le justificatif avec le protocole openid4vp-v1-unsigned
et la réponse contient response
dans la propriété data
.
La manière exacte d'analyser la réponse dépend du protocole. Vous devez normalement :
- Déchiffrez la charge utile de la réponse. La méthode de décryptage dépend du protocole utilisé. Découvrez comment déchiffrer la charge utile pour
openid4vp
(à l'aide de JWE) etorg-iso-mdoc
(à l'aide du chiffrement de clé publique hybride). - Validez les signatures et l'émetteur. Pour en savoir plus, consultez la documentation Acceptation en ligne des identifiants numériques.
Pour consulter des exemples de code pour différents protocoles, consultez le code de la démo ou la version hébergée en direct.
Valider la confiance dans l'émetteur
La signature cryptographique des identifiants numériques prouve leur authenticité. Toutefois, les développeurs doivent vérifier que l'émetteur est adapté et fiable pour leur cas d'utilisation spécifique. Par exemple, pour accorder une remise aux étudiants, un site d'e-commerce doit exiger un identifiant émis par une université accréditée et refuser tout identifiant signé par d'autres entités. Une méthode courante pour vérifier la fiabilité de l'émetteur consiste à tenir une liste des émetteurs approuvés et à refuser tout émetteur qui ne correspond pas.
Commencer
Prêt à développer vos compétences ? Voici ce que vous devez savoir.
- Disponibilité : Chrome 141 ou version ultérieure active l'API Digital Credentials par défaut sur différentes plates-formes.
- Conditions requises : les utilisateurs doivent disposer d'un appareil compatible, par exemple un appareil Android exécutant les services Google Play version 24.0 ou ultérieure, ou un appareil iOS exécutant la version 26 ou ultérieure. L'appareil doit disposer d'une application de portefeuille numérique installée qui est compatible avec l'API Digital Credentials, par exemple Google Wallet ou un portefeuille de démonstration.
- Essayez la démo : la meilleure façon de comprendre l'expérience utilisateur et de tester votre implémentation est d'essayer la démo en direct sur https://verifier.multipaz.org avec Chrome 141 ou version ultérieure.
Ressources
Pour en savoir plus, consultez les ressources suivantes :
- Guide du développeur : API Digital Credentials
- Spécification : W3C Digital Credentials
- Assistance Android Assistance Android pour les identifiants numériques
Envoyer des commentaires
Maintenant que l'API Digital Credentials est disponible, nous aimerions connaître votre expérience de développement avec celle-ci. Signalez un problème pour nous faire part de vos commentaires ou signaler des bugs.