Determina il provider di passkey con AAGUID

Le parti affidabili possono determinare a quale provider 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'uso delle passkey è che possono consentire agli utenti di creare più passkey per un singolo account. Grazie a questa flessibilità e alla robustezza delle passkey, anche se l'utente viene bloccato perdendo una delle passkey, può comunque accedere alla parte coinvolta utilizzando passkey alternative.

La sfida per gli utenti che gestiscono più passkey su una parte soggetta a limitazioni è identificare la passkey corretta quando devono modificare o eliminare una passkey specifica tra le altre. Un buon esempio è quando un utente vuole rimuovere una passkey inutilizzata. Ti consigliamo di allegare informazioni sulla passkey, ad esempio la data di creazione e l'ultimo utilizzo, all'elenco delle passkey. Questo aiuta gli utenti a trovare una passkey specifica.

Le parti soggette a limitazioni possono anche consentire agli utenti di assegnare un nome a una passkey non appena vengono create o in un secondo momento, ma molti utenti non lo fanno. Idealmente, le passkey vengono denominate automaticamente in modo da riflettere gli indicatori inviati dal client o le informazioni incluse nella credenziale di chiave pubblica.

I browser forniscono una stringa user agent e le parti possono utilizzare per assegnare un nome alle passkey, ma piattaforme come i browser Android, iOS o 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 indica necessariamente chi sia l'effettivo fornitore di passkey.

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

Determina il provider di passkey con AAGUID

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

Layout dell'oggetto di attestazione che illustra i dati dell'autenticatore inclusi (contenenti dati di credenziali attestati) e la dichiarazione di attestazione.
È possibile trovare AAGUID nei dati dell'autenticatore.

Le parti soggette a limitazioni possono utilizzare AAGUID per identificare il provider di passkey. Ad esempio, se un utente crea una passkey su un dispositivo Android usando Gestore delle password di Google, la parte soggetta a limitazioni riceverà un AAGUID pari a "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4". La parte soggetta a limitazioni può annotare la passkey nell'elenco per indicare che è stata creata su Gestore delle password di Google.

Le impostazioni della passkey nella pagina delle impostazioni di sicurezza mostrano informazioni dettagliate su ciascuna passkey.
Un esempio di UI di gestione delle passkey.

Per mappare un AAGUID a un provider di passkey, le parti soggette a limitazioni possono utilizzare un repository di AAGUID proveniente dalla community. Cercando l'AAGUID nell'elenco, puoi trovare il nome del provider di 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 che utilizza 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 di passkey che ha creato la passkey. Le parti soggette a limitazioni possono utilizzare AAGUID per semplificare la gestione delle passkey per gli utenti. È possibile utilizzare un repository di AAGUID proveniente dalla community per mappare gli AAGUID ai provider di passkey.