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és d'accès à l'aide duquel une clé d'accès est créée en examinant 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. Cette flexibilité, ainsi que la robustesse des clés d'accès, permettent à l'utilisateur de se connecter à la partie de confiance à l'aide d'autres clés d'accès, même s'il est bloqué hors du compte en raison de la perte de l'une de ses 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 parmi d'autres. 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 permet aux utilisateurs de 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 de l'authentificateur d'identifiants de clé publique.

Mise en page de l'objet d'attestation illustrant les données de l'authentificateur incluses (contenant les données d'identifiant attestées) et l'énoncé 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'UI 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 de AAGUID provenant de la communauté peut être utilisé pour les mapper sur des fournisseurs de clés d'accès.