Déterminer le fournisseur de clés d'accès avec l'AAGUID

Les parties de confiance (RP) peuvent déterminer le fournisseur de clé d'accès à l'aide de l'AAGUID des identifiants de clé publique associés.

L'un des avantages des clés d'accès est qu'elles permettent aux utilisateurs de créer plusieurs clés d'accès pour un même compte. Grâce à cette flexibilité et à la robustesse des clés d'accès, même si l'utilisateur perd l'accès à son compte en perdant l'une de ses clés d'accès, il peut toujours se connecter au tiers de confiance à l'aide d'autres clés d'accès.

Les utilisateurs qui gèrent plusieurs clés d'accès sur un RP doivent identifier la bonne clé d'accès lorsqu'ils doivent en modifier ou en supprimer une en particulier. Par exemple, lorsqu'un utilisateur souhaite supprimer une clé d'accès inutilisée. Nous recommandons aux RP d'joindre des informations sur la clé d'accès, telles que la date de création et la date de dernière utilisation dans la liste des clés d'accès. Cela aide les utilisateurs à trouver une clé d'accès spécifique.

Les RP peuvent également autoriser les utilisateurs à nommer une clé d'accès dès sa création ou plus tard, mais de nombreux utilisateurs ne le font pas. Idéalement, les clés d'accès sont nommées automatiquement en fonction des signaux envoyés par le client ou des informations incluses dans les identifiants de clé publique.

Les navigateurs fournissent une chaîne user-agent que les parties de confiance peuvent utiliser pour nommer des clés d'accès, mais des plates-formes telles qu'Android, iOS ou les navigateurs pour ordinateur de bureau dotés de fonctionnalités d'extension permettent de créer une clé d'accès par des gestionnaires de mots de passe tiers. La chaîne user-agent ne représente pas nécessairement le fournisseur de clés d'accès réel.

Grâce à l'AAGUID (Authenticator Attestation Globally Unique Identifier), inclus dans les identifiants de clé publique renvoyés lors de l'enregistrement d'une clé d'accès, les RP peuvent déterminer le fournisseur de clés d'accès et l'utiliser pour que les utilisateurs puissent trouver facilement la clé d'accès appropriée.

Déterminer le fournisseur de clés d'accès avec AAGUID

L'AAGUID est un numéro unique qui identifie le modèle de l'authentificateur (et non l'instance spécifique de l'authentificateur). L'AAGUID se trouve dans les données d'authentificateur d'identifiants de clé publique.

Mise en page de l'objet d'attestation illustrant les données d'authentificateur incluses (contenant les données des identifiants certifiés) et la déclaration d'attestation.
L'AAGUID se trouve dans les données de l'authentificateur.

Les RP peuvent utiliser l'AAGUID pour identifier le fournisseur de clés d'accès. Par exemple, si un utilisateur crée une clé d'accès sur un appareil Android à l'aide du Gestionnaire de mots de passe de Google, le RP recevra un AAGUID de "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4". Le RP peut annoter la clé d'accès dans la liste des clés d'accès pour indiquer qu'elle a été créée dans le Gestionnaire de mots de passe de Google.

Les paramètres des clés d'accès sur la page des paramètres de sécurité affichent des informations détaillées sur chaque clé d'accès.
Exemple d'interface utilisateur de gestion des clés d'accès

Pour mapper un AAGUID à un fournisseur de clés d'accès, les RP peuvent utiliser un dépôt de AAGUID provenant de la communauté. En recherchant l'AAGUID dans la liste, vous pouvez trouver le nom du fournisseur de clés d'accès et le texte des données SVG de son icône.

La plupart des bibliothèques WebAuthn proposent de récupérer l'AAGUID. L'exemple suivant montre le code d'enregistrement côté serveur à l'aide de SimpleWebAuthn:

// Import a list of AAGUIDs from a JSON file
import aaguids from './aaguids.json' with { type: 'json' };

...

 // Use SimpleWebAuthn handy function to verify the registration request.
const { verified, registrationInfo } = await verifyRegistrationResponse({
  response: credential,
  expectedChallenge,
  expectedOrigin,
  expectedRPID,
  requireUserVerification: false,
});

...

const { aaguid } = registrationInfo;
const provider_name = aaguids[aaguid]?.name || 'Unknown';

Conclusion

L'AAGUID est une chaîne unique qui identifie le fournisseur de clés d'accès ayant créé une clé d'accès. Les RP peuvent utiliser l'AAGUID pour faciliter la gestion des clés d'accès par les utilisateurs. Un dépôt d'AAGUID alimenté par la communauté peut être utilisé pour mapper des AAGUID aux fournisseurs de clés d'accès.