Nutzern die Nutzung von Passkeys erleichtern

Veröffentlicht am 09.05.2025, zuletzt aktualisiert am 22.12.2025

Passkeys bieten eine starke, phishingresistente Authentifizierung. Die Einführung bei Nutzern kann jedoch zu Problemen führen. Mit der automatischen Passkey-Erstellung können Sie Passkeys für Ihre Nutzer im richtigen Moment erstellen, sofern sie bereits ein Passwort für Ihre Website gespeichert haben. „Conditional Create“ (Bedingte Erstellung), mit der die automatische Passkey-Erstellung aktiviert wird, ist Teil der WebAuthn-Spezifikation.

Funktionsweise

Um Nutzern die Einführung von Passkeys zu erleichtern, verwenden Sie eine WebAuthn API-Funktion namens Conditional Create (Bedingte Erstellung). Mit „Conditional Create“ kann Ihre Website einen Passkey für den Nutzer anfordern, ohne dass dieser etwas tun muss.

Dieser Ablauf funktioniert, wenn die folgenden Bedingungen erfüllt sind:

  • Der Nutzer hat ein Passwort in seinem Standardpasswortmanager gespeichert.
  • Das Passwort wurde vor Kurzem verwendet. Idealerweise rufen Sie „Conditional Create“ unmittelbar nach einer erfolgreichen passwortbasierten Anmeldung auf.

Wenn beide Bedingungen erfüllt sind, können Sie den Passwortmanager auffordern, einen Passkey für den Nutzer zu erstellen, indem Sie „Conditional Create“ aufrufen. Nachdem der Passkey erfolgreich erstellt wurde, wird der Nutzer je nach Passwortmanager benachrichtigt.

Ablauf der Passkey-Anfrage mit bedingter Erstellung.

Kompatibilität

„Conditional Create“ wird von Safari unter macOS und allen Browsern unter iOS, sowie von Chrome auf dem Desktop und Chrome unter Android unterstützt.

Diese Unterstützung bedeutet, dass die Funktion mit den jeweiligen Standard-Passkey-Anbietern funktioniert: iCloud-Schlüsselbund (Passwörter) in Safari unter macOS und iOS sowie Google Passwortmanager in Chrome auf dem Desktop und unter Android.

Da iOS 18 oder höher und Android 14 oder höher Passkey-Anbieter von Drittanbietern unterstützen, hängt die Unterstützung von „Conditional Create“ vom Passkey-Anbieter ab, unabhängig vom verwendeten Browser. Wenn der ausgewählte Passkey-Anbieter „Conditional Create“ nicht unterstützt, wird kein neuer Passkey erstellt.

„Conditional Create“ implementieren

Die automatische Passkey-Erstellung basiert auf einer WebAuthn API-Funktion namens Conditional Create (Bedingte Erstellung). Dabei handelt es sich um reguläre WebAuthn-create()-Anfragen, bei denen der mediation-Parameter auf "conditional" gesetzt ist. Dies funktioniert ähnlich wie die automatische Passkey -Ausfüllfunktion für get()-Anfragen.

Verwenden Sie „Conditional Create“, nachdem sich der Nutzer mit einem Passwort angemeldet hat. Ob die Erstellung erfolgreich ist, hängt vom Passwortmanager und bestimmten Bedingungen ab. Diese Bedingungen können je nach Passwortmanager variieren und sich im Laufe der Zeit ändern. In Chrome mit Google Passwortmanager (GPM) muss sich der Nutzer beispielsweise vor Kurzem mit einem gespeicherten Passwort für die Website angemeldet haben.

Wenn der Browser den Passkey erfolgreich erstellt, wird ein öffentlicher Schlüssel zurückgegeben. Senden Sie diesen öffentlichen Schlüssel an Ihr Back-End um die Registrierung abzuschließen und die zukünftige Authentifizierung zu ermöglichen.

Funktionserkennung

Sie können feststellen, ob „Conditional Create“ im Browser verfügbar ist, indem Sie PublicKeyCredential.getClientCapabilities() aufrufen. Prüfen Sie, ob ein zurückgegebenes Objekt für die Eigenschaft conditionalCreate den Wert true enthält.

if (window.PublicKeyCredential && PublicKeyCredential.getClientCapabilities) {
  const capabilities = await PublicKeyCredential.getClientCapabilities();
  if (capabilities.conditionalCreate) {
    // Conditional create is available
  }
}

Wenn getClientCapabilities nicht verfügbar ist, ist auch „Conditional Create“ nicht verfügbar.

Passkey bedingt erstellen

Rufen Sie navigator.credentials.create() mit mediation: "conditional" auf, um einen Passkey automatisch zu erstellen.

const cred = await navigator.credentials.create({
  publicKey: options,
  // Request conditional creation
  mediation: 'conditional'
});

Sie sollten die automatische Passkey-Erstellung unmittelbar nach der Anmeldung des Nutzers verwenden, um die besten Chancen zu haben, die Kriterien des Passwortmanagers für die automatische Erstellung zu erfüllen.

Sie können den resultierenden öffentlichen Schlüssel an den Server senden, um den Passkey zu bestätigen und zu registrieren. Achten Sie darauf, dass der Nutzer auf dem Server angemeldet ist.

Vorsichtsmaßnahmen

„Conditional Create“ ist an sich nicht schwer zu implementieren, aber es gibt einige Vorsichtsmaßnahmen, die bei der tatsächlichen Integration dieser Funktion in ein bestehendes System zu beachten sind.

Nutzerpräsenz und Nutzerbestätigung auf dem Server ignorieren

In der Registrierungsantwort werden sowohl "User Presence" (Nutzerpräsenz) als auch "User Verified" (Nutzer bestätigt) als false zurückgegeben. Der Server sollte diese Flags daher bei der Bestätigung der Anmeldedaten ignorieren.

Laufenden WebAuthn-Aufruf abbrechen, bevor ein Passkey automatisch erstellt wird

Wenn der RP erwartet, dass sich der Nutzer entweder mit einem Passkey oder einem Passwort anmeldet, ist eine bedingte Abfrage die beste Wahl. Dies kann dazu führen, dass der bedingte Abrufaufruf abgebrochen wird, bevor eine bedingte Erstellung durchgeführt wird.

Dazu müssen Sie AbortController verwenden und .abort() aufrufen.

// To abort a WebAuthn call, instantiate an AbortController.
const controller = new AbortController();

const cred = await navigator.credentials.get({
  publicKey: options,
  signal: controller.signal,
  // Request conditional get
  mediation: 'conditional'
});

// Abort the call
controller.abort();

Ausnahmen ordnungsgemäß ignorieren

Bei der bedingten Passkey-Erstellung gibt es einige Fälle, in denen Sie Ausnahmen ignorieren sollten:

  • InvalidStateError: Im Passkey-Anbieter ist bereits ein Passkey vorhanden. Geben Sie excludeCredentials an.
  • NotAllowedError: Die Bedingung für die Erstellung eines Passkeys ist nicht erfüllt.
  • AbortError: Der WebAuthn-Aufruf wird abgebrochen.

Wenn Sie in diesen Fällen Fehler anzeigen, kann das den Nutzer verwirren, da der Browser sie im Hintergrund verarbeitet: Nur bei Erfolg wird eine Benachrichtigung angezeigt und bei Fehlern werden keine sichtbaren Meldungen ausgelöst.

Signal, wenn die Registrierung eines Passkeys fehlschlägt

Wenn ein Passkey erstellt, aber nicht auf dem Server registriert werden konnte, schlägt der Anmeldeversuch des Nutzers fehl. Das kann passieren, wenn die Liste der Passkeys zwischen dem Passkey-Anbieter und dem Server nicht übereinstimmt.

Verwenden Sie die Signal API, um solche Umstände zu vermeiden .

Upgrade von passwortlosen Anmeldungen wird nicht unterstützt

Derzeit ist die bedingte Erstellung eines Passkeys davon abhängig, dass der Nutzer ein gültiges Passwort eingibt. Das bedeutet, dass passwortlose Anmeldemethoden wie Magic Links, Telefonnummernbestätigung oder Identitätsverbund die Bedingung nicht erfüllen.

Zusammenfassung

Die automatische Passkey-Erstellung kann die Einführung von Passkeys auf Ihrer Website beschleunigen und Nutzern helfen, von Passwörtern zu einer sichereren Authentifizierungsmethode zu wechseln.

Weitere Informationen zu Passkeys finden Sie unter Anmeldung ohne Passwort mit Passkey.