Le relying party (RP) possono determinare da quale fornitore di passkey è stata creata una passkey esaminando l'AAGUID della credenziale di chiave pubblica associata.
Sfide relative alla gestione delle passkey
Uno dei vantaggi dell'utilizzo delle passkey è che consentono agli utenti di creare più passkey per un singolo account. Grazie a questa flessibilità e alla robustezza della passkey, anche se l'utente non riesce ad accedere all'account perché ha perso una delle sue passkey, può comunque accedere alla relying party utilizzando passkey alternative.
La sfida per gli utenti che gestiscono più passkey su un RP è identificare quella giusta quando devono modificarne o eliminarne una specifica tra le altre. Un buon esempio è quando un utente vuole rimuovere una passkey inutilizzata. È consigliabile che i RP alleghino informazioni sulla passkey, come la data di creazione e l'ultima data di utilizzo nell'elenco delle passkey. In questo modo, gli utenti possono trovare una passkey specifica.
I RP possono anche consentire agli utenti di assegnare un nome a una passkey non appena viene creata o in un secondo momento, ma molti utenti non lo fanno. Idealmente, le passkey vengono denominate automaticamente in base agli indicatori inviati dal client o alle informazioni incluse nelle credenziali della chiave pubblica.
I browser forniscono una stringa dello user agent che le parti che fanno affidamento possono utilizzare per assegnare un nome alle passkey, ma piattaforme come Android, iOS o browser desktop con funzionalità di estensione consentono di creare una passkey da parte di gestori delle password di terze parti e la stringa dello user agent non rappresenta necessariamente chi è il fornitore effettivo della passkey.
Con l'identificatore univoco globale (AAGUID) dell'autenticatore, incluso nella credenziale della chiave pubblica restituita durante la registrazione di una passkey, le RP possono determinare il provider di passkey e aiutare gli utenti a trovare la passkey giusta.
Determinare il fornitore di passkey con AAGUID
L'AAGUID è un numero univoco che identifica il modello dell'autenticatore (non l'istanza specifica dell'autenticatore). L'AAGUID si trova nei dati dell'autenticatore di una credenziale di chiave pubblica.

Le RP possono utilizzare l'AAGUID per identificare il fornitore di passkey. Ad esempio, se un utente crea una passkey su un dispositivo Android utilizzando Gestore delle password di Google, la RP riceverà un AAGUID di "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
. La RP può annotare la passkey nell'elenco delle passkey per indicare che è stata creata nel Gestore delle password di Google.

Per mappare un AAGUID a un fornitore di passkey, le RP possono utilizzare un repository di AAGUID di origine della community. Cercando l'AAGUID nell'elenco, è possibile trovare il nome del fornitore di passkey e il testo dei dati SVG della sua icona.
Il recupero dell'AAGUID è una funzionalità fornita dalla maggior parte delle librerie WebAuthn. L'esempio seguente mostra il codice di registrazione lato server utilizzando 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';
Conclusione
AAGUID è una stringa univoca che identifica il fornitore di passkey che ha creato una passkey. Le RP possono utilizzare l'AAGUID per semplificare la gestione delle passkey da parte degli utenti. Un repository di AAGUID di origine comunitaria può essere utilizzato per mappare gli AAGUID ai fornitori di passkey.