Vertrauenswürdige Seiten (Relying Parties, RPs) können anhand der AAGUID der zugehörigen öffentlichen Schlüssel-Anmeldedaten ermitteln, von welchem Passkey-Anbieter ein Passkey erstellt wurde.
Herausforderungen bei der Passkey-Verwaltung
Ein Vorteil von Passkeys besteht darin, dass Nutzer mehrere Passkeys für ein einzelnes Konto erstellen können. Dank dieser Flexibilität und der Robustheit von Passkeys kann sich der Nutzer auch dann mit alternativen Passkeys bei der vertrauenden Partei anmelden, wenn er keinen seiner Passkeys mehr hat.
Die Herausforderung für Nutzer, die mehrere Passkeys für einen RP verwalten, besteht darin, den richtigen Passkey zu identifizieren, wenn sie einen bestimmten Passkey unter anderen bearbeiten oder löschen möchten. Ein gutes Beispiel ist, wenn ein Nutzer einen nicht verwendeten Passkey entfernen möchte. Wir empfehlen RPs, Informationen zum Passkey wie das Erstellungs- und das Datum der letzten Verwendung in die Passkey-Liste anzugeben. So können Nutzer einen bestimmten Passkey leichter finden.
RPs können Nutzern auch erlauben, Passkeys direkt nach der Erstellung oder später zu benennen, aber viele Nutzer tun dies nicht. Idealerweise werden Passkeys automatisch benannt, wobei die vom Client gesendeten Signale oder die in den öffentlichen Schlüsselanmeldedaten enthaltenen Informationen berücksichtigt werden.
Browser stellen einen User-Agent-String bereit, mit dem vertrauende Seiten Passkeys benennen können. Plattformen wie Android, iOS oder Desktop-Browser mit Erweiterungsfunktionen ermöglichen jedoch das Erstellen eines Passkeys über Passwortmanager von Drittanbietern. Der User-Agent-String gibt nicht unbedingt an, wer der tatsächliche Passkey-Anbieter ist.
Mit der Authenticator Attestation Globally Unique Identifier (AAGUID), die in den öffentlichen Schlüssel-Anmeldedaten enthalten ist, die bei der Registrierung eines Passkeys zurückgegeben werden, können RPs den Passkey-Anbieter ermitteln und ihn verwenden, damit Nutzer den richtigen Passkey ganz einfach finden.
Passkey-Anbieter mit AAGUID ermitteln
AAGUID ist eine eindeutige Zahl, die das Modell des Authenticators identifiziert, nicht die spezifische Instanz des Authenticators. Die AAGUID ist Teil der Authenticator-Daten von Anmeldedaten mit öffentlichem Schlüssel.
RPs können die AAGUID verwenden, um den Passkey-Anbieter zu identifizieren. Wenn ein Nutzer beispielsweise mit dem Google Passwortmanager einen Passkey auf einem Android-Gerät erstellt, erhält das RP die AAGUID "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
. Der RP kann den Passkey in der Passkey-Liste mit Anmerkungen versehen, um anzugeben, dass er im Google Passwortmanager erstellt wurde.
Um eine AAGUID einem Passkey-Anbieter zuzuordnen, können RPs ein von der Community bereitgestelltes Repository mit AAGUIDs verwenden. Wenn Sie die AAGUID in der Liste suchen, finden Sie den Namen des Passkey-Anbieters und den SVG-Datentext des Symbols.
Das Abrufen der AAGUID ist eine Funktion, die die meisten WebAuthn-Bibliotheken bieten. Das folgende Beispiel zeigt serverseitigen Registrierungscode mit 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';
Fazit
AAGUID ist ein eindeutiger String, der den Passkey-Anbieter identifiziert, der einen Passkey erstellt hat. RPs können AAGUIDs verwenden, um es Nutzern zu erleichtern, ihre Passkeys zu verwalten. Mit einem Community-Repository mit AAGUIDs können AAGUIDs Passkey-Anbietern zugeordnet werden.