Determina il provider di passkey con AAGUID

Le parti attendibili (RP) possono determinare da quale fornitore di passkey viene creata una passkey esaminando l'AAGUID della credenziale della chiave pubblica associata.

Sfide con la 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 delle passkey, anche se l'utente non riesce ad accedere all'account perché ha perso una delle sue passkey, può comunque accedere alla terza parte attendibile utilizzando passkey alternative.

La sfida per gli utenti che gestiscono più passkey su un RP è identificare la passkey corretta quando devono modificarne o eliminarne una specifica tra le altre. Un buon esempio è quando un utente vuole rimuovere una passkey non utilizzata. È consigliabile che i RP alleghino informazioni sulla passkey, ad esempio la data di creazione e la data dell'ultimo utilizzo nell'elenco delle passkey. In questo modo gli utenti possono trovare una passkey specifica.

Le parti soggette a limitazioni 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 nominate automaticamente in base agli indicatori inviati dal client o alle informazioni incluse nella credenziale della chiave pubblica.

I browser forniscono una stringa dello user agent che le parti di cui ci si può fidare possono utilizzare per assegnare un nome alle passkey, ma piattaforme come Android, iOS o browser desktop con funzionalità di estensione consentono la creazione di una passkey da parte di gestori delle password di terze parti e la stringa dello user agent non rappresenta necessariamente il fornitore effettivo della passkey.

Con l'AAGUID (Authenticator Attestation Globally Unique Identifier), incluso nella credenziale della chiave pubblica restituita durante la registrazione di una passkey, gli RP possono determinare il provider della passkey e utilizzarlo per consentire agli utenti di trovare facilmente la passkey corretta.

Determinare il provider della passkey con AAGUID

AAGUID è un numero univoco che identifica il modello dell'autenticatore (non l'istanza specifica dell'autenticatore). AAGUID è disponibile nei dati dell'autenticatore di una credenziale con chiave pubblica.

Layout dell'oggetto attestazione che illustra i dati dell'autenticatore inclusi (contenente i dati delle credenziali attestate) e la dichiarazione di attestazione.
AAGUID si trova nei dati dell'app di autenticazione.

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

Le impostazioni delle passkey nella pagina delle impostazioni di sicurezza mostrano informazioni dettagliate su ogni passkey.
Esempio di interfaccia utente di gestione delle passkey.

Per mappare un AAGUID a un fornitore di passkey, gli RP possono utilizzare un repository di AAGUID di origine comunitaria. Cercando l'AAGUID nell'elenco, puoi trovare il nome del fornitore della passkey e il testo dei dati SVG dell'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 provider della passkey che ha creato una passkey. Gli RP possono utilizzare 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.