Richtlinie
Tutorial zu Passkey
Mit @capgo/capacitor-passkey verwenden
Halten Sie Ihren Browser-WebAuthn code in einer Capacitor-App, während das Plugin native Passwortanrufe und native Host-Patching verarbeitet.
Browser-API
@capgo/capacitor-passkey Browser-__CAPGO_KEEP_0__ hält den gleichen WebAuthn-Flow bei, den Sie bereits im Web verwenden:
await navigator.credentials.create({ publicKey: registrationOptions });
await navigator.credentials.get({ publicKey: requestOptions });
Bei nativen Builds installiert das Plugin einen Shim für navigator.credentials.create() und navigator.credentials.get(), leitet die Anfrage an die iOS- und Android-Passwort-APIs weiter und gibt browserähnliche Anmeldeobjekte an Ihre App zurück.
Installieren und synchronisieren Sie native Projekte
bun add @capgo/capacitor-passkey
bunx cap sync
Konfigurieren Sie die Host-App einmal
Fügen Sie die Plugin-Konfiguration in capacitor.config.ts oder capacitor.config.json:
import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'app.capgo.passkey.example',
appName: 'My App',
webDir: 'dist',
plugins: {
CapacitorPasskey: {
origin: 'https://signin.example.com',
autoShim: true,
domains: ['signin.example.com'],
},
},
};
export default config;
Was die Plugin-Konfiguration tut
Die Konfiguration wird aus plugins.CapacitorPasskey in: primäre HTTPS Relying-Party-Quelle, die vom Shim und direkt verwendet wird capacitor.config.*.
origin: primary HTTPS relying-party origin used by the shim and direct APIdomains: standardmäßigautoShimund steuert die nativetrueAuto-Konfigurations-Hookcap syncRun sync wiederholen, nachdem die Konfiguration geändert wurde:
Installieren Sie den Shim während des Bootstraps
bunx cap sync
Importieren Sie das Plugin aus dem Standard-Paket-Eintrittspunkt und installieren Sie den Shim während des App-Bootstraps:
Nachdem Sie das gemacht haben, kann Ihr bestehender Browser-Style-Passkey __CAPGO_KEEP_0__ unverändert bleiben.
import { CapacitorPasskey } from '@capgo/capacitor-passkey';
await CapacitorPasskey.autoShimWebAuthn();
After that, your existing browser-style passkey code can stay the same.
Halten Sie Ihren normalen WebAuthn-Flow aufrecht
import { CapacitorPasskey } from '@capgo/capacitor-passkey';
CapacitorPasskey.shimWebAuthn({
origin: 'https://signin.example.com',
});
Keep your normal WebAuthn flow
const credential = await navigator.credentials.create({
publicKey: registrationOptions,
});
const assertion = await navigator.credentials.get({
publicKey: requestOptions,
});
Was synchronisiert Patches für Sie
Während bunx cap sync, das Plugin aktualisiert die generierten native Host-Projekte:
- iOS: Zugehörigkeitsdomänenberechtigungen und Xcode-Berechtigungen-Verkabelung, wenn erforderlich
- Android:
asset_statementsMetadaten und die generierten Ressourcen, die vom Manifest verwendet werden
Die native Einrichtung benötigt immer noch Website-Vertrauensdateien
Das Plugin reduziert die Arbeit auf der App-Seite, aber Passwörter noch immer auf die Website-Vertrauensdateien für Ihr Relying-Party-Domain abhängig. Sie benötigen immer noch, um zu hosten:
https://your-domain/.well-known/apple-app-site-associationhttps://your-domain/.well-known/assetlinks.json
Das Plugin kann die generierten native Projekte während der Synchronisierung patchen, aber es kann keine oder die Website-Vertrauensdateien für Sie erstellen oder hosten.
Andere öffentliche Methoden
Die öffentliche Plugin API offenbart auch die direkten Hilfsmittel, die in src/definitions.ts:
await CapacitorPasskey.getConfiguration()gibt die aufgelöste Rückgabeorigin,domains,autoShim, und aktuellplatform.await CapacitorPasskey.createCredential(...)registriert eine Passkey aus einem JSON-sicheren WebAuthn-Payload.await CapacitorPasskey.getCredential(...)authentifiziert sich mit einer bestehenden Passkey aus einem JSON-sicheren WebAuthn-Payload.await CapacitorPasskey.isSupported()zeigt an, ob die aktuelle Laufzeit Passkeys unterstützt.await CapacitorPasskey.getPluginVersion()gibt die aktuelle native Implementierungsversionssymbol zurück.
Plattform-Anleitungen
Wichtiger iOS-Hinweis
Bei iOS 17.4 und neuer verwendet der Plugin den browser-stiligen Client-Daten API so dass die konfigurierte HTTPS-Origin im API sichtbar ist. clientDataJSON.
Wichtiger Android-Hinweis
Der Android Credential Manager kann die gleiche Relying-Party und Passwörter wie Ihre Website teilen, wenn Digital Asset Links konfiguriert sind, aber die native Behauptung-Origin ist nicht identisch mit einem Browser-Origin. Wenn Ihr Backend streng die Validierung clientDataJSON.originvollzieht, stellen Sie sicher, dass es auch das Android-App-Origin neben Ihrem Website-Origin akzeptiert.
Vollständige Referenz
- GitHub https://github.com/Cap-go/capacitor-passkey/
- Dokumentation: /docs/plugins/passkey/