Les parties de confiance peuvent déterminer le fournisseur de clés d'accès dont une clé d'accès est créée en examinant l'AAGUID des identifiants de clé publique associés.
Défis liés à 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 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.
Pour les utilisateurs qui gèrent plusieurs clés d'accès sur un tiers assujetti à des restrictions, la difficulté consiste à identifier la bonne clé d'accès lorsqu'ils doivent en modifier ou en supprimer une en particulier. C'est le cas lorsqu'un utilisateur souhaite supprimer une clé d'accès inutilisée. Les tiers assujettis à des restrictions sont recommandés pour joindre des informations sur la clé d'accès, telles que la date de création et la date de dernière utilisation. Cela permet aux utilisateurs de trouver une clé d'accès spécifique.
Les tiers assujettis à des restrictions peuvent également autoriser les utilisateurs à nommer une clé d'accès dès qu'elle a été créée ou plus tard, mais ce n'est pas le cas de nombreux utilisateurs. Idéalement, les clés d'accès sont nommées automatiquement reflétant les signaux envoyés par le client ou les informations incluses dans les identifiants de clé publique.
Les navigateurs fournissent une chaîne user-agent que les tiers de confiance peuvent utiliser pour nommer les clés d'accès. Toutefois, les plates-formes telles que les navigateurs Android, iOS ou pour ordinateur 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 réel des clés d'accès.
Grâce à l'identifiant unique global d'attestation Authenticator (AAGUID), inclus dans l'identifiant de clé publique renvoyé lors de l'enregistrement d'une clé d'accès, les tiers assujettis à des restrictions peuvent déterminer le fournisseur de clés d'accès et l'utiliser pour permettre aux utilisateurs de trouver facilement la clé d'accès appropriée.
Déterminer le fournisseur de clés d'accès avec l'AAGUID
AAGUID est un numéro unique qui identifie le modèle de l'authentificateur (et non l'instance spécifique de l'authentificateur). AAGUID peut être trouvé dans les données d'authentification des identifiants de clé publique.
![Mise en page de l'objet d'attestation illustrant les données d'authentificateur incluses (contenant des données d'identification certifiées) et l'instruction d'attestation.](https://web.dev/static/articles/webauthn-aaguid/image/attestation_object.jpg?authuser=6&hl=fr)
Les tiers assujettis à des restrictions peuvent utiliser 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 l'AAGUID "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
. Le tiers assujetti à des restrictions peut annoter la clé d'accès dans la liste pour indiquer qu'elle a été créée dans le Gestionnaire de mots de passe de Google.
![Les paramètres de clé d'accès sur la page des paramètres de sécurité affichent des informations détaillées sur chaque clé d'accès.](https://web.dev/static/articles/webauthn-aaguid/image/passkey_management.jpg?authuser=6&hl=fr)
Pour mapper un AAGUID à un fournisseur de clés d'accès, les tiers assujettis à des restrictions peuvent utiliser un dépôt communautaire d'AAGUID. En recherchant l'AAGUID dans la liste, vous pouvez trouver le nom du fournisseur de la clé d'accès et le texte des données de l'icône SVG.
La récupération de l'AAGUID est une fonctionnalité fournie par la plupart des bibliothèques WebAuthn. L'exemple suivant présente le code d'enregistrement côté serveur avec 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
AAGUID est une chaîne unique qui identifie le fournisseur de la clé d'accès qui l'a créée. Les tiers assujettis à des restrictions peuvent utiliser AAGUID pour permettre aux utilisateurs de gérer plus facilement leurs clés d'accès. Un dépôt AAGUID fourni par la communauté peut être utilisé pour mapper des AAGUID aux fournisseurs de clés d'accès.