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

Icône Passkey

Conservez le WebAuthn de votre navigateur de style code dans Capacitor tout en laissant au plugin gérer les appels de passkey natifs et la mise à jour de l'hôte.

Guide

Tutoriel sur le passkey

Utilisation de @capgo/capacitor-passkey

Conservez votre WebAuthn de navigateur de style code dans une application Capacitor tout en laissant au plugin gérer les appels de passkey natifs et la mise à jour de l'hôte.

Browser-style API

@capgo/capacitor-passkey permet de conserver 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 });

Sur les builds natifs, le plugin installe un shim pour navigator.credentials.create() et navigator.credentials.get(), envoie la demande aux APIs de clés de passe iOS et Android, et retourne des objets de données de credenciaux similaires à ceux du navigateur à votre application.

Installez et synchronisez les projets natifs

bun add @capgo/capacitor-passkey
bunx cap sync

Configurez l'application hôte une fois

Ajoutez 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;

Ce que fait la configuration du plugin

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

  • origin: origine HTTPS primaire utilisée par le shim et direct API
  • domains: autres noms d'hôte de l'entité de confiance à intégrer dans la configuration native lors de la synchronisation
  • autoShim: par défaut, true et contrôle l'hook de configuration native automatique cap sync Exécutez à nouveau la synchronisation après avoir modifié la configuration :

Installez le shim lors du démarrage

bunx cap sync

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

Après cela, votre clé de passe existante de style navigateur __CAPGO_KEEP_0__ peut rester la même.

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

await CapacitorPasskey.autoShimWebAuthn();

After that, your existing browser-style passkey code can stay the same.

Conservez votre flux WebAuthn normal

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

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

Quels patchs de synchronisation vous sont fournis

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

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

What sync patches for you

Durant bunx cap sync, le plugin met à jour les projets de hôte natifs générés :

  • iOS : les autorisations de domaine associées et les autorisations Xcode lorsqu'elles sont nécessaires
  • Android : asset_statements les métadonnées et les ressources générées utilisées par le manifeste

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

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

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

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

Les autres méthodes publiques

La méthode publique du plugin API expose également les assistants directs définis dans src/definitions.ts:

  • await CapacitorPasskey.getConfiguration() renvoie la valeur résolue origin, domains, autoShim, et actuelle platform.
  • await CapacitorPasskey.createCredential(...) enregistre une clé de passe à partir d'un payload WebAuthn sécurisé en JSON.
  • await CapacitorPasskey.getCredential(...) s'authentifie avec une clé de passe existante à partir d'un payload WebAuthn sécurisé en JSON.
  • await CapacitorPasskey.isSupported() indique si le runtime actuel prend en charge les clés de passe.
  • 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.

Alerte importante Android

Le gestionnaire de crédentiels Android peut partager la même partie de confiance et les mots de passe partagés que votre site web lorsque les liens d'actif numérique sont configurés, mais l'origine d'affirmation native n'est pas identique à une origine de navigateur. clientDataJSON.originVérifiez 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 L'utilisation de @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-connexion-social pour les détails d'implémentation dans @capgo/capacitor-connexion-social @capgo/capacitor-authentification-native pour les détails d'implémentation dans @capgo/capacitor-authentification-native, et Authentification à deux facteurs pour les détails d'implémentation dans Authentification à deux facteurs.