Présentation de la phase d'évaluation de l'API Digital Credentials

Une phase d'évaluation pour l'API Digital Credentials commence à partir de Chrome 128. L'API Digital Credentials est une nouvelle API de plate-forme Web qui permet aux sites Web de demander de manière sélective des informations vérifiables sur l'utilisateur à l'aide d'identifiants numériques tels qu'un permis de conduire ou une carte nationale d'identité stockée dans un portefeuille numérique.

Contexte

L'identité numérique est en train de devenir réalité, et de nombreuses entités publiques et privées commencent à émettre des identifiants numériques liés à l'appareil. Par exemple, les cartes d'identité et les permis de conduire mobiles de certains États américains (comme l'Arizona, la Californie, le Colorado, la Géorgie et le Maryland) peuvent désormais être provisionnés dans des applications de portefeuille numérique telles que Google Wallet sur les appareils mobiles. Des réglementations concernant l'acceptation des certificats numériques pour certaines vérifications en ligne sont également en cours d'élaboration, dont eIDAS 2.0.

<ph type="x-smartling-placeholder">
</ph> Permis de conduire mobile dans Google Wallet
Permis de conduire mobile dans Google Wallet.

Les caractéristiques d'un certificat numérique dépendent de son format, bien qu'elles incluent généralement:

  • Sécurité et confidentialité renforcées: l'utilisation d'un chiffrement avancé et de méthodes d'authentification fortes contribue à protéger les données sensibles et à sécuriser l'accès. Par exemple, la présentation d'identifiants est généralement protégée par une authentification utilisateur via l'application Wallet.
  • Divulgation sélective: les parties de confiance (RP) peuvent demander certaines informations de l'identifiant, ce qui permet aux utilisateurs de limiter les données partagées aux seules données nécessaires au cas d'utilisation. Par exemple, il est possible de partager si un utilisateur a plus de 18 ans sans révéler sa date de naissance.
  • Interopérabilité: le justificatif d'identité doit respecter les normes internationales, ce qui permet la compatibilité entre différents systèmes et pays et facilite l'acceptation transfrontalière.
  • Vérifiabilité: les données de justificatif partagées sont signées numériquement par l'émetteur. Le tiers assujetti à des restrictions peut vérifier cette signature pour vérifier l'authenticité des données.

En raison des qualifications numériques' de nature vérifiable, elles peuvent permettre des cas d'utilisation tels que:

  • Vérification de l'âge:demander à confirmer l'âge d'une personne avant de diffuser des contenus soumis à une limite d'âge ou d'acheter des articles soumis à une limite d'âge.
  • Validation de l'identité:demandez un nom et une adresse pour valider l'identité d'une personne à des fins de conformité aux lois ou de prévention de la fraude.
  • Vérification des droits de conduite:vérifiez si une personne est autorisée à conduire (par exemple, lorsqu'elle loue une voiture).

Les sites Web ont commencé à communiquer directement avec les applications de portefeuille mobile (par exemple, à l'aide de schémas d'URL personnalisés) pour demander des identifiants numériques pour différents cas d'utilisation. Les navigateurs y voient donc une opportunité de renforcer la sécurité de cette interaction, de résister aux utilisations abusives et de faciliter l'utilisation d'une API spécifique.

Présentation de l'API Digital Credentials

L'API Digital Credentials est une nouvelle API de plate-forme Web qui permet aux sites Web des tiers assujettis à des restrictions de demander la présentation d'identifiants numériques à partir d'applications de portefeuille. L'API est disponible dans Chrome en tant qu'évaluation Origin Trial à partir de Chrome 128.

L'API est indépendante du protocole, ce qui permet au tiers assujetti à des restrictions de spécifier un protocole en fonction de ses exigences. Lorsqu'un tiers assujetti à des restrictions envoie une demande, le navigateur l'envoie au système d'exploitation mobile, qui recherche les identifiants correspondants dans les applications de portefeuille installées. Si c'est le cas, le système d'exploitation mobile invite l'utilisateur à en sélectionner un et envoie la requête au portefeuille sélectionné par l'utilisateur. Après une authentification locale, le portefeuille renvoie une réponse contenant les données d'identification demandées.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> Schéma de la communication entre le navigateur, le portefeuille et le tiers de confiance.

Dans un premier temps, Chrome prendra en charge l'API dans Chrome sur Android pour demander des identifiants aux applications Wallet sur le même appareil. À l'avenir, nous prévoyons d'autoriser Chrome à demander des identifiants inter-appareils à partir d'un autre appareil mobile.

Lors du lancement, Google Wallet s'intégrera à l'API Digital Credentials. Ainsi, certaines entreprises et organisations pourront demander aux utilisateurs de présenter leur pièce d'identité en ligne via Chrome sur Android, et vérifier l'authenticité des données transmises en examinant la signature cryptographique. Pour participer, remplissez ce formulaire si vous souhaitez accepter les pièces d'identité numériques de Google Wallet.

L'API sera bientôt utilisée par les comptes Google pour valider l'identité de certains utilisateurs date de naissance. Les utilisateurs résidant dans un État américain éligible pourront utiliser leur carte d'identité ou leur permis de conduire fournis dans les applications de portefeuille disponibles (y compris Google Wallet) pour partager facilement leur date de naissance avec Google, sans partager d'autres informations sur leur identité. Cela permet aux utilisateurs de prouver à Google, tout en respectant la confidentialité, qu'ils ont l'âge minimal requis en ce qui concerne leur compte.

Essayer

Pour essayer l'API Digital Credentials, procédez comme suit:

  1. Installez l'application de portefeuille de démonstration en suivant les instructions décrites sur cette page.
  2. Lancez l'application IC Wallet et provisionnez un permis de conduire mobile de démonstration (mDL).
    • Appuyez sur le bouton "Menu", puis sélectionnez Ajouter un document autosigné.
  3. Accédez à https://digital-credentials.dev avec Chrome 128 ou une version ultérieure.
  4. Appuyez sur Demander des identifiants (OpenID4VP).

Consultez la démonstration qui utilise https://digital-credentials.dev, un site Web de test permettant aux développeurs de générer des demandes d'identifiants pour différents attributs:

La démonstration se déroule comme suit:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 1. L'utilisateur est redirigé vers le site Web du tiers de confiance, où il est invité à fournir son nom de famille validé, son prénom et une garantie d'âge de plus de 21 ans.
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 2. Le navigateur confirme si l'utilisateur a l'intention de partager des identifiants numériques avec ce site Web.
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 3. Le système d'exploitation affiche les informations demandées et les identifiants éligibles qui peuvent correspondre à la requête afin que l'utilisateur puisse la sélectionner et la traiter.
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 4. Le portefeuille authentifie localement l'utilisateur avec le déverrouillage de l'écran.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 5. Le certificat numérique demandé est maintenant transmis au site Web du tiers de confiance.

Fonctionnement de l'API

L'API Digital Credentials repose sur l'API Credential Management, mais à partir d'une surface d'API indépendante: navigator.identity. En appelant navigator.identity.get(), le site Web peut demander un certificat numérique stocké dans une application de portefeuille mobile. pour en savoir plus.

// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
  signal: controller.signal,
  digital: {
    providers: [{
      protocol: "openid4vp",
      request: {
        response_type: "vp_token",
        nonce: "n-0S6_WzA2Mj",
        client_metadata: {...},
        presentation_definition: {...}
      }
    }],
  }
});

La surface de l'API de base est semblable à navigator.credentials.get(), sauf qu'elle n'accepte que le type d'identifiant "digital". Dans le type d'identifiants numériques, ajoutez un tableau providers contenant IdentityRequestProvider avec les paramètres de base suivants:

Exemple de charge utile pour le type d'identifiant numérique à l'aide d'OID4VP:

{
  protocol: 'openid4vp',
  request: {
    response_type: 'vp_token',
    nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
    client_metadata: {},
    presentation_definition: {     
      id: 'mDL-request-demo',
      input_descriptors: [{
        id: "org.iso.18013.5.1.mDL",
        format: {
          mso_mdoc: {
            alg: ["ES256"]
          }
        },
        constraints: {
          limit_disclosure: "required",
          fields: [
            {
              path: ["$['org.iso.18013.5.1']['family_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['given_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['age_over_21']"],
              intent_to_retain: false
            }
          ]
        }
      }],
    }
  }
}

Avec cette demande, les portefeuilles qui possèdent des mDL sur l'appareil fourniront un ensemble vérifiable d'identifiants contenant les éléments suivants:

  • Nom de famille de l'utilisateur.
  • Prénom de l'utilisateur.
  • Valeur booléenne indiquant si l'utilisateur a plus de 21 ans ou non.

Voici un exemple de charge utile de réponse:

{
  data: '{\n  "vp_token": "o2d2ZXJzaW9uYz..."\n}'
  id: '',
  protocol: 'openid4vp',
  type: 'digital'
}

Dans cet exemple, l'identifiant a été demandé avec le protocole "openid4vp" et la réponse contient "vp_token" dans la propriété data. Veuillez consulter la page OpenID for Verifiable Presentation (OID4VP) pour la spécification de l'API W3C Digital Credentials pour découvrir comment analyser la réponse et vérifier le justificatif d'identité.

L'API Digital Credentials est compatible avec Chrome sur Android en tant que phase d'évaluation. Elle n'est pour le moment pas compatible avec Chrome sur ordinateur et iOS. Pour les autres moteurs de navigateur, les conversations actives sont gérées via le groupe communautaire W3C Web Incubator.

Participer à la phase d'évaluation

Pour le développement, vous pouvez activer localement l'API Digital Credentials en activant l'indicateur Chrome chrome://flags#web-identity-digital-credentials dans Chrome 128 ou version ultérieure.

Cette fonctionnalité est également disponible en phase d'évaluation. Les phases d'évaluation vous permettent de tester de nouvelles fonctionnalités et de donner votre avis sur leur facilité d'utilisation, leur utilité et leur efficacité à la communauté des normes Web. Pour en savoir plus, consultez Premiers pas avec les phases d'évaluation. Pour vous inscrire à cette phase d'évaluation ou à une autre, accédez à la page d'inscription.

  1. Demandez un jeton pour votre origine.
  2. Ajoutez le jeton à vos pages. Vous disposez pour cela de deux méthodes: <ph type="x-smartling-placeholder">
      </ph>
    • Ajoutez une balise <meta> origin-trial à l'en-tête de chaque page. Voici un exemple: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • Si vous pouvez configurer votre serveur, vous pouvez également ajouter le jeton à l'aide d'un en-tête HTTP Origin-Trial. L'en-tête de réponse obtenu doit ressembler à ceci:Origin-Trial: TOKEN_GOES_HERE.

Envoyer des commentaires

Si vous avez des commentaires sur l'API Digital Credentials, envoyez-les via l'outil de suivi des problèmes Chromium dédié.