Sauter au contenu principal
Retour aux plugins
@capgo/capacitor-passkey
Tutoriel
@capgo/capacitor-passkey

Passkey

Conservez le style de navigateur WebAuthn code dans Capacitor tout en traitant les appels de passkey natives et les mises à jour de l'hôte pour vous

Guide

Tutoriel sur la clé de passe

Tester sur appareil

Téléchargez l'application Capgo, puis scannez le code QR code.

Lien QR de prévisualisation du plugin de clé de passe code

En utilisant @capgo/capacitor-passkey

Conservez votre style de navigateur WebAuthn code dans une application Capacitor tout en laissant le plugin gérer les appels de clés de passe natives et le patchage de l'hôte natif.

Style de navigateur API

@capgo/capacitor-passkey conserve le même flux WebAuthn que vous utilisez déjà sur le web :

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

Dans les builds natives, le plugin installe un shim pour navigator.credentials.create() et navigator.credentials.get(), transmet la demande à l'API de clés de passe iOS et Android, et renvoie des objets de credenciaux similaires à ceux du navigateur à votre application.

Installer et synchroniser les projets natives

bun add @capgo/capacitor-passkey
bunx cap sync

Configurer l'application d'hôte une fois

Ajouter la configuration du plugin dans capacitor.config.ts ou 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;

Qu'est-ce que le plugin de configuration fait

La configuration est lue à partir de plugins.CapacitorPasskey dans capacitor.config.*.

  • origin: origine HTTPS primaire de l'entité de confiance utilisée par le shim et directement API
  • domains: hôtes supplémentaires d'entité de confiance à intégrer dans la configuration native lors de la synchronisation
  • autoShim: par défaut true et contrôle la mise en œuvre native cap sync l'hook de configuration automatique

Exécutez à nouveau la synchronisation après avoir modifié la configuration :

bunx cap sync

Installez le shim lors du démarrage du bootstrap

Importez le plugin à partir de l'entrée de package standard, puis installez le shim lors du démarrage de l'application :

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

await CapacitorPasskey.autoShimWebAuthn();

After cela, votre clé de passe existante de style navigateur code peut rester la même.

Si vous devez forcer le shim ou définir l'origine configurée en temps de exécution, appelez :

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

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

Conservation de votre flux WebAuthn normal

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

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

Quels correctifs de synchronisation vous sont bénéfiques

Pendant la phase de synchronisation, bunx cap syncle plugin met à jour les projets de hôte natif générés :

  • iOS : droits d'entitlement associés et câblage des droits Xcode lorsqu'il le faut
  • Android : asset_statements méta-données et les ressources générées utilisées par le manifeste

La mise en place native nécessite toujours des fichiers de confiance du site web

Le plugin réduit le travail côté application, mais les clés de passe dépendent toujours des fichiers de confiance du site web pour votre domaine de partie de confiance. Vous avez toujours besoin de héberger :

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

Le plugin peut corriger les projets natifs générés pendant la synchronisation, mais il ne peut pas créer ou héberger ces fichiers de confiance du site web pour vous.

Autres méthodes publiques

Le plugin public API expose également les assistants directs définis dans src/definitions.ts:

  • await CapacitorPasskey.getConfiguration() renvoie la valeur résolue origin, domains, autoShim, et actuel platform.
  • await CapacitorPasskey.createCredential(...) s'inscrit un passeport à partir d'un payload WebAuthn sécurisé JSON.
  • await CapacitorPasskey.getCredential(...) s'authentifie avec un passeport existant à partir d'un payload WebAuthn sécurisé JSON.
  • await CapacitorPasskey.isSupported() indique si le runtime actuel prend en charge les passeports.
  • await CapacitorPasskey.getPluginVersion() renvoie la version de marque de l'implémentation native actuelle.

Guides de plateforme

Note importante iOS

Sur iOS 17.4 et versions ultérieures, le plugin utilise le client-data de style navigateur API donc l'origine HTTPS configurée est reflétée dans clientDataJSON.

Avertissement Android important

Le gestionnaire de clés Android peut partager la même partie confiante et les mots de passe partagés que votre site web lorsque les liens de biens numériques sont configurés, mais l'origine d'affirmation native n'est pas identique à une origine de navigateur. Si votre serveur backend valide strictement clientDataJSON.originAssurez-vous que votre serveur accepte l'origine de l'application Android en plus de l'origine de votre site web.

Référence complète

Continuez à partir de l'utilisation de @capgo/capacitor-passkey

Si vous utilisez En utilisant @capgo/capacitor-passkey pour planifier l'authentification et les flux de compte, connectez-le avec @capgo/capacitor-passkey pour les détails d'implémentation dans @capgo/capacitor-passkey, Démarrage pour les détails d'implémentation dans Démarrage, @capgo/capacitor-social-login pour les détails d'implémentation dans @capgo/capacitor-social-login, @capgo/capacitor-native-biometric pour les détails d'implémentation dans @capgo/capacitor-native-biometric, et L'authentification à deux facteurs pour les détails d'implémentation dans L'authentification à deux facteurs.