Passkey-Anbieter mit AAGUID ermitteln

Die vertrauenden Seiten können bestimmen, bei welchem Passkey-Anbieter ein Passkey erstellt wird, indem sie die AAGUID der zugehörigen Anmeldedaten für den öffentlichen Schlüssel prüfen.

Herausforderungen bei der Verwaltung von Passkeys

Einer der Vorteile von Passkeys besteht darin, dass Nutzer mehrere Passkeys für ein Konto erstellen können. Dank dieser Flexibilität und der Robustheit von Passkeys können Nutzer sich auch dann mit alternativen Passkeys bei der vertrauenden Partei anmelden, wenn sie nicht mehr auf das Konto zugreifen können, weil sie einen ihrer Passkeys verlieren.

Nutzer, die mehrere Passkeys auf einem RP verwalten, müssen den richtigen Passkey identifizieren, wenn sie einen bestimmten Passkey bearbeiten oder löschen möchten. Ein gutes Beispiel ist, wenn ein Nutzer einen nicht verwendeten Passkey entfernen möchte. RPs werden empfohlen, um Informationen zum Passkey wie das Erstellungsdatum und das Datum der letzten Verwendung in der Passkey-Liste anzuhängen. So können Nutzer einen bestimmten Passkey leichter finden.

RPs können Nutzern auch erlauben, einen Passkey direkt oder später zu benennen, was bei vielen Nutzern jedoch nicht der Fall ist. Im Idealfall werden Passkeys automatisch nach den vom Client gesendeten Signalen oder den Informationen in den Anmeldedaten für den öffentlichen Schlüssel benannt.

Browser bieten einen User-Agent-String, mit dem vertrauende Parteien Passkeys benennen können. Plattformen wie Android-, iOS- oder Desktop-Browser mit Erweiterungsfunktionen ermöglichen jedoch das Erstellen eines Passkeys durch Passwortmanager von Drittanbietern und der User-Agent-String gibt nicht unbedingt wieder, wer der eigentliche Passkey-Anbieter ist.

Da die Authenticator Attestation Globally Unique Identifier (AAGUID) in den Public-Key-Anmeldedaten enthalten ist, die bei der Registrierung eines Passkeys zurückgegeben werden, können RPs den Passkey-Anbieter ermitteln und ihn für Nutzer verwenden, um den richtigen Passkey zu finden.

Passkey-Anbieter mit AAGUID bestimmen

AAGUID ist eine eindeutige Zahl, die das Modell des Authenticators identifiziert, nicht die spezifische Instanz des Authenticators. AAGUID kann als Teil der Authentifizierungsdaten eines öffentlichen Schlüssels für Anmeldedaten gefunden werden.

<ph type="x-smartling-placeholder">
</ph> Layout des Attestierungsobjekts, das die enthaltenen Authenticator-Daten (mit attestierten Anmeldedatendaten) und die Attestierungserklärung veranschaulicht. <ph type="x-smartling-placeholder">
</ph> AAGUID ist in den Authenticator-Daten enthalten.

RPs können den Passkey-Anbieter mithilfe von AAGUID 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.

<ph type="x-smartling-placeholder">
</ph> Passkey-Einstellungen auf der Seite „Sicherheitseinstellungen“ enthalten detaillierte Informationen zu jedem Passkey. <ph type="x-smartling-placeholder">
</ph> Beispiel für eine Benutzeroberfläche zur Verwaltung von Passkeys

Um eine AAGUID einem Passkey-Anbieter zuzuordnen, können RPs ein von der Community bereitgestelltes Repository von AAGUIDs verwenden. In der Liste findest du den Namen des Passkey-Anbieters und den zugehörigen SVG-Datentext als Symbol.

<ph type="x-smartling-placeholder">

Das Abrufen der AAGUID ist eine Funktion, die die meisten WebAuthn-Bibliotheken bereitstellen. Das folgende Beispiel zeigt einen 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 Nutzern mithilfe von AAGUID die Verwaltung ihrer Passkeys erleichtern. Ein aus der Community bereitgestelltes Repository mit AAGUIDs kann verwendet werden, um AAGUIDs Passkey-Anbietern zuzuordnen.