En ligne
Les pièces d'identité numériques peuvent être acceptées à la fois dans les flux d'application et dans les flux Web. Pour accepter les identifiants Google Wallet, procédez comme suit:
- Intégrez l'API à l'aide de l'application ou du Web en suivant les instructions fournies.
- Remplissez ce formulaire pour demander et accepter les conditions d'utilisation des identifiants Google Wallet.
Prérequis
Pour tester la présentation des pièces d'identité, vous devez d'abord vous inscrire au programme bêta public à l'aide du compte de test prévu. Fournissez ensuite les informations suivantes à votre contact Google désigné.
- Lien vers les conditions d'utilisation
- Logo
- Site Web
- ID de package Play Store (pour les intégrations d'applications Android)
- ID Gmail utilisé pour rejoindre la version bêta publique
Formats d'identifiants compatibles
Plusieurs normes proposées définissent le format de données des documents d'identité numériques, dont deux gagnent en popularité dans le secteur:
- mdocs : définis par l'ISO.
- Identifiants vérifiables du W3C : définis par le W3C.
Bien que le Gestionnaire d'identifiants Android accepte les deux formats, Google Wallet n'accepte actuellement que les pièces d'identité numériques basées sur mdoc.
Expérience utilisateur
Lorsqu'une application demande des attributs d'identité, le processus suivant se produit:
Découverte des identifiants:l'application interroge les portefeuilles disponibles pour identifier les identifiants pouvant répondre à la requête. Android présente ensuite un sélecteur d'interface utilisateur du système, qui affiche les informations à partager. Cela permet à l'utilisateur de prendre une décision éclairée sur les identifiants à utiliser.
Sélection de l'utilisateur et interaction avec le portefeuille : l'utilisateur sélectionne des identifiants, et Android appelle l'application de portefeuille correspondante pour effectuer la transaction. L'application Wallet peut présenter son propre écran d'autorisation ou nécessiter une confirmation biométrique.
Résultat:Si l'utilisateur donne son consentement, les identifiants d'identité sélectionnés sont partagés avec l'application à l'origine de la demande. Si l'utilisateur refuse, une erreur est renvoyée.
Dans l'application
Pour demander des identifiants d'identité à vos applications Android, procédez comme suit :
Mettre à jour les dépendances
Dans le fichier build.gradle de votre projet, mettez à jour vos dépendances pour utiliser le Gestionnaire d'identifiants (bêta) :
dependencies {
implementation("androidx.credentials:credentials:1.5.0-alpha05")
// optional - needed for credentials support from play services, for devices running Android 13 and below.
implementation("androidx.credentials:credentials-play-services-auth:1.5.0-alpha05")
}
Configurer le Gestionnaire d'identifiants
Pour configurer et initialiser un objet CredentialManager
, ajoutez une logique semblable à celle-ci :
// Use your app or activity context to instantiate a client instance of CredentialManager.
val credentialManager = IdentityCredentialManager.Companion.getClient(context)
Attributs d'identité de la requête
// Retrieves the user's digital identites from wallet apps for your app.
val getIdentityCredentialOption = GetDigitalCredentialOption(
requestJson = requestJson, // this is what partners needs to set, example JSON specified below
)
val result = credentialManager.getCredential(request = GetCredentialRequest(credentialOptions, ...)
L'appelant de l'application fournit tous les paramètres IdentityRequest sous forme de chaîne JSON. Ici, il est représenté par le paramètre requestMatcher
de CredentialOption. Le Gestionnaire d'identifiants ne se préoccupe pas du contenu de ce fichier JSON. Cette requête JSON sera transmise directement aux portefeuilles, qui sont ensuite chargés de l'analyser et de déterminer quels identifiants peuvent répondre à la requête. Vous trouverez l'implémentation complète dans l'application exemple.
Le W3C devrait définir cette requête JSON comme un composant de l'API Web. Cette standardisation permettra aux navigateurs de transmettre directement la requête à Android.
Pour vous donner une idée de ce à quoi cette requête peut ressembler, voici un exemple de requête mdoc :
{
"selector": {
"format": [
"mdoc"
],
"doctype": "org.iso.18013.5.1.mDL",
"fields": [
{
"namespace": "org.iso.18013.5.1",
"name": "family_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "given_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "age_over_21",
"intentToRetain": false
}
]
},
"nonce": "3cydsUF9xNFyBDAAWOct09hEeSqrFX2WB2r0G6f8Ol0=",
"readerPublicKey": "BApmGdElal2-1dtafsdHVRa1EpAWZfhlQj_iof2I8L3V8_dCK1gVR0_12E4ZSQ2LcqXRd4zxVeKEqU1wUSgGWUU="
}
La réponse renvoie un identityToken (chaîne JSON), défini par le W3C. L'application Wallet est chargée de créer cette réponse.
Exemple :
{
"token": "<base64 encoded response>"
}
Envoyer le jeton et le traiter sur le serveur
Une fois le identityToken reçu, votre application doit le transmettre à votre serveur d'application pour validation. La première étape consiste à décoder le jeton au format base64. La matrice d'octets générée représente les données CBOR, qui respectent la CDDL suivante.
CredentialDocument = {
"version": tstr, // Set to "ANDROID-HPKE-v1"
"pkEm": bstr, // Public key, in uncompressed form
"cipherText": bstr // The encrypted data
}
L'étape suivante consiste à calculer le SessionTranscript à partir de la norme ISO/CEI 18013-5:2021 avec une structure de transfert spécifique à Android :
SessionTranscript = [
null, // DeviceEngagementBytes not available
null, // EReaderKeyBytes not available
AndroidHandover // Defined below
]
AndroidHandover = [
"AndroidHandoverv1", // Version number
nonce, // nonce that comes from request
appId, // RP package name
pkRHash, // The SHA256 hash of the recipient public key
]
cipherText est chiffré à l'aide du chiffrement HPKE. Pour le déchiffrer, utilisez SessionTranscript comme données authentifiées supplémentaires, ainsi que la clé privée EC générée précédemment et les paramètres suivants:
- KEM : DHKEM(P-256, HKDF-SHA256)
- KDF : HKDF-SHA256
- AEAD: AES-128-GCM
Le texte clair obtenu correspond aux octets CBOR de DeviceResponse, comme défini dans la norme ISO/CEI 18013-5:2021. DeviceResponse doit être validé conformément à la clause 9 de la norme ISO/CEI 18013-5:2021. Cette opération comprend plusieurs étapes, comme vérifier que le mdoc provient d'un émetteur de confiance et que la réponse est signée par l'appareil prévu. La classe DeviceResponseParser du projet d'identifiants d'identité de l'OpenWallet Foundation peut être utilisée pour une partie de ce processus de validation.
Web
Pour demander des identifiants d'identité à l'aide de l'API Digital Credentials sur Chrome, vous devez vous inscrire à la phase d'évaluation de l'API Digital Credentials.
En personne
Pour accepter les pièces d'identité issues de Google Wallet, suivez les étapes suivantes :
- Créer ou acquérir un lecteur pour accepter les pièces d'identité comme défini dans la norme ISO 18013-5
- Charger les certificats IACA dans le lecteur pour vous assurer que les pièces d'identité acceptées sont authentiques
- Tester votre solution
- Enregistrer votre application auprès de Google Wallet
Construire ou acquérir un lecteur pour accepter les pièces d'identité comme défini par la norme ISO 18013-5
Les pièces d'identité dans Wallet sont implémentées conformément à la norme ISO 18013-5 pour les permis de conduire mobiles. Elles utilisent le NFC ou les codes QR ainsi que le BLE comme mécanisme de transfert de données. Ainsi, tout appareil capable d'implémenter ces aspects de la norme peut servir de lecteur, même une application mobile. Puisque la norme est ouverte, plusieurs implémentations tierces sont disponibles sur le marché. Vous pouvez également implémenter la fonctionnalité directement si nécessaire.
Pour obtenir des conseils sur l'implémentation de cette fonctionnalité vous-même, consultez notre application Android pour les lecteurs de référence Open Source, qui implémente la norme ISO et peut accepter des mDL issus de Google Wallet.
Pour commencer, compilez et exécutez l'application pour les lecteurs de référence :
- Clonez le dépôt des applications de référence.
- Ouvrez le projet dans Android Studio.
- Créez et exécutez la cible
appverifier
sur votre appareil Android ou votre émulateur.
Charger les certificats IACA dans le lecteur pour vous assurer que les pièces d'identité acceptées sont authentiques
Pour valider des identifiants réels, vous devez disposer d'une pièce d'identité d'un émetteur accepté dans Wallet. Vous trouverez ci-dessous la liste des émetteurs acceptés par Google Wallet, ainsi que des liens vers leurs certificats pour validation.
Tester votre solution
Pour tester votre solution, compilez et exécutez notre application Android pour titulaire de référence Open Source. Pour compiler et exécuter l'application du titulaire de référence, procédez comme suit:
- Clonez le dépôt des applications de référence.
- Ouvrez le projet dans Android Studio.
- Créez et exécutez la cible
appholder
sur votre appareil Android ou votre émulateur.
(Facultatif) Enregistrer votre application auprès de Google Wallet
Enregistrez votre application auprès de Google Wallet en remplissant ce formulaire.