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

Publié le 4 septembre 2024, dernière mise à jour le 16 octobre 2024

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 via des identifiants numériques tels qu'un permis de conduire ou une carte d'identité nationale stockés 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 identifiants numériques pour certaines vérifications en ligne émergent également, comme eIDAS 2.0.

Permis de conduire mobile dans Google Wallet
Permis de conduire mobile dans Google Wallet.

Les fonctionnalités d'un identifiant numérique dépendent de son format, mais elles incluent généralement les éléments suivants :

  • Sécurité et confidentialité renforcées : l'utilisation de méthodes de chiffrement avancées et d'authentification renforcée permet de protéger les données sensibles et de garantir un accès sécurisé. Par exemple, la présentation d'identifiants est généralement protégée par une authentification de l'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, vous pouvez indiquer si un utilisateur a plus de 18 ans sans révéler sa date de naissance.
  • Interopérabilité : les identifiants doivent respecter les normes internationales, ce qui permet de les utiliser dans différents systèmes et pays, et facilite leur acceptation transfrontale.
  • Vérifiabilité: les données d'identification partagées sont signées numériquement par l'émetteur. La RP peut vérifier cette signature pour vérifier l'authenticité des données.

En raison de leur nature vérifiable, les identifiants numériques 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 catégories de véhicules valables : vérifiez si une personne est en mesure de conduire un véhicule donné (par exemple, lorsqu'elle loue une voiture).

Les sites Web ont commencé à communiquer directement avec les applications de portefeuille mobile (par exemple, en utilisant des schémas d'URL personnalisés) pour demander des identifiants numériques pour divers cas d'utilisation. Les navigateurs voient l'opportunité de rendre cette interaction plus sécurisée, plus résistante aux utilisations abusives et plus facile à utiliser via une API dédiée.

Présentation de l'API Digital Credentials

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

L'API est indépendante du protocole, ce qui permet au RP 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 des portefeuilles sont détectés, le système d'exploitation mobile invite l'utilisateur à en sélectionner un et envoie la requête au portefeuille sélectionné. Après une authentification locale, le portefeuille renvoie une réponse contenant les données d'identification demandées.

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.

Au lancement, Google Wallet sera intégré à l'API Digital Credentials, ce qui permettra à certaines entreprises et organisations de demander aux utilisateurs de présenter leur pièce d'identité en ligne, via Chrome sur Android, et de 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 également utilisée par les comptes Google pour valider la date de naissance de certains utilisateurs. 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 préservant leur confidentialité, qu'ils ont l'âge requis pour leur compte.

Essayer

Conditions requises :

  • Services Google Play 23.40 ou version ultérieure
  • Chrome 128 ou version ultérieure
  • Activer l'indicateur à chrome://flags#web-identity-digital-credentials

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

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

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

Voici comment la démonstration fonctionne étape par étape :

1. L'utilisateur accède au site Web de la partie de confiance et doit présenter son nom de famille validé, son prénom et une attestation d'âge de plus de 21 ans.
2. Le navigateur confirme si l'utilisateur a l'intention de partager des identifiants numériques avec ce site Web.
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.
4. Le portefeuille authentifie l'utilisateur localement avec le déverrouillage de l'écran.

5. Le certificat numérique demandé est maintenant transmis au site Web du tiers de confiance.

Fonctionnement de l'API

L'API Digital Credentials est basée sur l'API Gestion des identifiants, mais à partir d'une surface 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.

// 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'identifiants "digital". Dans le type d'identifiant numérique, ajoutez un tableau providers contenant IdentityRequestProvider avec les paramètres de base suivants :

  • protocol : spécifiez un protocole d'échange avec une chaîne. Au moment de l'essai de l'origine, le protocole principal en cours de développement est "openid4vp".
  • request : indiquez 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 la spécification OpenID for Verifiable Presentation (OID4VP) for the W3C Digital Credentials API (OpenID pour la présentation vérifiable (OID4VP) pour l'API W3C Digital Credentials).

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 requête, les portefeuilles qui disposent de mDL sur l'appareil fourniront un ensemble d'identifiants vérifiables 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, les identifiants ont été demandés 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 l'identifiant.

L'API Digital Credentials est disponible en phase d'évaluation sur Chrome pour Android. Chrome sur ordinateur et iOS ne sont pas compatibles avec cette fonctionnalité pour le moment. Pour les autres moteurs de navigateur, des discussions actives sont organisées par le biais du groupe de la communauté de l'incubateur Web du W3C.

Participer à l'essai de l'origine

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

Cette fonctionnalité est également disponible en version d'essai pour les origines. Les essais Origin Trial vous permettent de tester de nouvelles fonctionnalités et de donner votre avis sur leur facilité d'utilisation, leur praticité et leur efficacité à la communauté des normes Web. Pour en savoir plus, consultez Premiers pas avec les phases d'évaluation. Pour vous inscrire à cet essai ou à un autre, accédez à la page d'inscription.

  1. Demandez un jeton pour votre origine.
  2. Ajoutez le jeton à vos pages. Pour cela, vous pouvez procéder de deux façons :
    • Ajoutez une balise <meta> origin-trial dans l'en-tête de chaque page. Par exemple, cela peut se présenter comme suit : <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 se présenter comme suit :Origin-Trial: TOKEN_GOES_HERE.

Envoyer des commentaires

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