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

Les parties de confiance peuvent déterminer le fournisseur de clé d'accès par lequel une clé d'accès est créée en examinant l'AAGUID de l'identifiant de clé publique associé.

Difficultés liées à la gestion des clés d'accè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 est bloqué dans son compte parce qu'il a perdu l'une de ses clés d'accès, il peut toujours se connecter à la partie de confiance à l'aide d'autres clés d'accès.

Le défi pour les utilisateurs qui gèrent plusieurs clés d'accès sur un RP est d'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. Il est recommandé aux RP d'ajouter 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. Dans l'idéal, les clés d'accès sont nommées automatiquement en fonction des signaux envoyés par le client ou des informations incluses dans l'identifiant de clé publique.

Les navigateurs fournissent une chaîne user-agent que les parties de confiance peuvent utiliser pour nommer les clés d'accès. Toutefois, les plates-formes telles qu'Android, iOS ou les navigateurs de bureau avec des 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é d'accès réel.

Grâce à l'identifiant unique global de l'authentificateur (AAGUID), inclus dans l'identifiant de clé publique renvoyé lors de l'enregistrement d'une clé d'accès, les RP peuvent déterminer le fournisseur de clé d'accès et aider les utilisateurs à trouver la clé d'accès appropriée.

Déterminer le fournisseur de clé d'accès avec l'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 de l'authentificateur d'une clé publique.

Disposition de l'objet d'attestation illustrant les données de l'authentificateur incluses (contenant les données d'identification attestées) 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 d'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 récupération de l'AAGUID est une fonctionnalité fournie par la plupart des bibliothèques WebAuthn. 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 aider les utilisateurs à gérer plus facilement leurs clés d'accès. Un dépôt d'AAGUID provenant de la communauté peut être utilisé pour mapper les AAGUID aux fournisseurs de clés d'accès.