Zum Inhalt springen

Hintergrundhinweise

Ihr Backend besitzt immer noch die normale WebAuthn-Zeremonie:

  • Erstellen Sie Registrierungs- und Authentifizierungsanfragen
  • Überprüfen Sie die Attestations- und Behauptungsantworten
  • Gewährleisten Sie die Überprüfung der Relying-Party-ID und der Herausforderung
  • Speichern Sie die Anmeldedaten und die Zähler auf die gleiche Weise wie für einen Browser-Flow

Das Plugin ist so konzipiert, dass es die Vorderseite Ihres bestehenden WebAuthn code beibehält.

  • Auf der Web-Seite wird es auf die echte Browser-WebAuthn API weitergeleitet.
  • Auf nativen Capacitor wird es browserartige Anmeldeobjekte zurückgegeben, die von nativen Passwort-APIs unterstützt werden.
  • Ihr Backend kann den gleichen Herausforderungs- und Überprüfungs-Pipeline beibehalten.

Was ändert sich auf Android

Was ändert sich bei Android

Android-native Passwörter entsprechen nicht dem Browser-Vertrauensmodell.

  • Digital Asset Links ermöglichen es Android, dasselbe Relying-Party und das gleiche Zertifikats-Ökosystem wie Ihre Website verwendet.
  • Die wörtliche clientDataJSON.origin __CAPGO_KEEP_0__ kann sich trotzdem von der Website-URL unterscheiden.
  • Wenn Ihr Server nur https://your-domain entscheidet, können Android-native Behauptungen auch dann fehlschlagen, wenn das Passwort ansonsten gültig ist.
Empfohlener Backend-Regel

Ermöglichen Sie die erwartete Browser-URL und die erwartete Android-App-URL für die gleiche Relying-Party, wenn Sie native Android-Passwörter unterstützen.

Das gibt Ihnen:

  • Browser-Unterstützung für die Website
  • native Passwortkennwortunterstützung in der Capacitor-App
  • eine Passwortkennwort-Ökosystem für das gleiche Relying-Party-Domain

Wenn Ihr Backend bereits JSON-Objekte zurückgibt PublicKeyCredentialCreationOptionsJSON und PublicKeyCredentialRequestOptionsJSON, Sie können auch den direkten Plugin API verwenden anstatt des Browser-Style-Shims:

import { CapacitorPasskey } from '@capgo/capacitor-passkey';
const registration = await CapacitorPasskey.createCredential({
origin: 'https://signin.example.com',
publicKey: registrationOptionsFromBackend,
});
const authentication = await CapacitorPasskey.getCredential({
origin: 'https://signin.example.com',
publicKey: requestOptionsFromBackend,
});