Zum Hauptinhalt springen
@capgo/capacitor-passkey Authentifizierung & Sicherheit Open Source

Passkey Capacitor Plugin

Behalte browserbasiertes WebAuthn code in Capacitor bei, während native Passkey-Aufrufe und Host-Patching automatisch für dich erledigt werden

Installieren

bun add @capgo/capacitor-passkey bunx cap sync
npm, pnpm oder yarn
  • npm install @capgo/capacitor-passkey
  • pnpm add @capgo/capacitor-passkey
  • yarn add @capgo/capacitor-passkey

Anleitung

Passkey in Capacitor nutzen

@capgo/capacitor-passkey verwenden

Nutze dein browserbasiertes WebAuthn code in einer Capacitor App, während das Plugin die nativen Passkey-Aufrufe und das native Host-Patching übernimmt.

Browserbasiertes API

@capgo/capacitor-passkey behält den WebAuthn-Flow bei, den du bereits im Web nutzt:

await navigator.credentials.create({ publicKey: registrationOptions });
await navigator.credentials.get({ publicKey: requestOptions });

Bei Native Builds installiert das Plugin einen Shim für navigator.credentials.create() und navigator.credentials.get(), leitet die Anfrage an die Passkey-APIs von iOS und Android weiter und gibt browserähnliche Credential-Objekte an deine App zurück.

Native Projekte installieren und synchronisieren

bun add @capgo/capacitor-passkey
bunx cap sync

Host-App einmalig konfigurieren

Plugin-Konfiguration hinzufügen 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 bewirkt

Die Konfiguration wird gelesen aus plugins.CapacitorPasskey in capacitor.config.*.

  • origin: primärer HTTPS-Relying-Party-Origin, der vom Shim und von direktem API genutzt wird
  • domains: zusätzliche Relying-Party-Hostnames, die während des Syncs in die native Config gepatcht werden
  • autoShim: Standardwert ist true und steuert den nativen cap sync Auto-Konfigurations-Hook

Führe den Sync nach der Config-Änderung erneut aus:

bunx cap sync

Shim während des Bootstraps installieren

Importiere das Plugin über den Standard-Package-Entrypoint und installiere dann den Shim während des App-Bootstraps:

import { CapacitorPasskey } from '@capgo/capacitor-passkey';

await CapacitorPasskey.autoShimWebAuthn();

Danach kann dein bestehender Browser-basierter Passkey code unverändert bleiben.

Falls du den Shim erzwingen oder den konfigurierten Origin zur Laufzeit überschreiben musst, rufe auf:

import { CapacitorPasskey } from '@capgo/capacitor-passkey';

CapacitorPasskey.shimWebAuthn({
  origin: 'https://signin.example.com',
});

Behalte deinen normalen WebAuthn-Flow bei

const credential = await navigator.credentials.create({
  publicKey: registrationOptions,
});

const assertion = await navigator.credentials.get({
  publicKey: requestOptions,
});

Was der Sync für dich patcht

Während bunx cap sync, aktualisiert das Plugin die generierten nativen Host-Projekte:

  • iOS: Associated Domains Entitlements und Xcode-Entitlements-Verknüpfung bei Bedarf
  • Android: asset_statements Metadaten und die vom Manifest verwendete generierte Ressource

Native Einrichtung benötigt weiterhin Website-Trust-Files

Das Plugin reduziert den Aufwand auf App-Seite, aber Passkeys hängen weiterhin von den Website-Trust-Files für deine Relying-Party-Domain ab. Du musst weiterhin hosten:

  • https://your-domain/.well-known/apple-app-site-association
  • https://your-domain/.well-known/assetlinks.json

Das Plugin kann die generierten nativen Projekte während des Sync patchen, kann diese Website-Trust-Files jedoch nicht für dich erstellen oder hosten.

Andere öffentliche Methoden

Das öffentliche Plugin API stellt zudem die direkten Helper bereit, die in src/definitions.ts:

  • await CapacitorPasskey.getConfiguration() gibt das aufgelöste origin, domains, autoShim, und aktuelle platform.
  • await CapacitorPasskey.createCredential(...) registriert einen Passkey aus einem JSON-safe WebAuthn-Payload.
  • await CapacitorPasskey.getCredential(...) authentifiziert mit einem vorhandenen Passkey aus einem JSON-safe WebAuthn-Payload.
  • await CapacitorPasskey.isSupported() gibt an, ob die aktuelle Runtime Passkeys unterstützt.
  • await CapacitorPasskey.getPluginVersion() gibt den aktuellen Versionsmarker der nativen Implementierung zurück.

Plattform-Guides

Wichtiger iOS-Hinweis

Ab iOS 17.4 nutzt das Plugin die client-data im Browser-Stil von API, sodass der konfigurierte HTTPS-Origin in clientDataJSON.

Wichtiger Android-Hinweis

Der Android Credential Manager kann bei konfigurierten Digital Asset Links dieselbe Relying Party und Passkeys wie deine Website nutzen, aber der native Assertion-Origin ist nicht identisch mit einem Browser-Origin. Wenn dein Backend strikt validiert clientDataJSON.origin, stelle sicher, dass neben deiner Website-Origin auch die Android-App-Origin akzeptiert wird.

Vollständige Referenz

Weiter mit Using @capgo/capacitor-passkey

Wenn du es nutzt @capgo/capacitor-passkey verwenden Um Authentifizierungs- und Account-Flows zu planen, verbinde es mit @capgo/capacitor-passkey für die Implementierungsdetails in @capgo/capacitor-passkey, Erste Schritte für die Implementierungsdetails in Erste Schritte, @capgo/capacitor-social-login für die Implementierungsdetails in @capgo/capacitor-social-login, @capgo/capacitor-native-biometric für die Implementierungsdetails in @capgo/capacitor-native-biometric, und Zwei-Faktor-Authentifizierung für die Implementierungsdetails zur Zwei-Faktor-Authentifizierung.

FAQ

Passkey Plugin FAQ

Wie installiere ich das Passkey Plugin in einer Capacitor App?

Führe "bun add @capgo/capacitor-passkey" (oder "npm install @capgo/capacitor-passkey") aus und danach "bunx cap sync", damit die iOS- und Android-Projekte das native code übernehmen. Importiere es in deiner App code aus "@capgo/capacitor-passkey".

Funktioniert @capgo/capacitor-passkey mit React, Vue und Angular?

Ja. Passkey ist ein Capacitor Package und funktioniert daher mit jedem Web-Framework, das in Capacitor läuft, einschließlich Ionic, React, Vue, Angular, Svelte und reinem JavaScript.

Welche Capacitor Version wird von @capgo/capacitor-passkey unterstützt?

Capgo Plugins folgen der Major-Version von Capacitor: Nutze die Plugin-Major-Version, die zu deiner Capacitor Major-Version passt (z. B. Plugin v8 bei Capacitor 8). Die Kompatibilitätstabelle im GitHub README listet die gepflegten Versionen auf.

Ist @capgo/capacitor-passkey kostenlos und Open Source?

Ja. Der code Code ist auf GitHub unter https://github.com/Cap-go/capacitor-passkey/ öffentlich einsehbar und das Package kann kostenlos via npm installiert werden. Bug-Reports und Pull Requests sind willkommen.

Kann ich code mit Passkey ohne App Store Review aktualisieren?

Die Installation oder ein Upgrade des Plugins ändert den nativen code, weshalb ein neuer Store-Build nötig ist. Danach können JavaScript-, HTML- und CSS-Änderungen, die das Plugin aufrufen, sofort per Capgo Live Updates ausgeliefert werden.

Passkey-Änderungen ausrollen, ohne auf den App-Review zu warten

Sobald das Plugin in deinem Store-Build ist, bringt Capgo mit Live-Updates deine JavaScript-, HTML- und CSS-Änderungen in Minuten zu den Nutzern.

Starte mit Capgo