Guide
Tutoriel sur Passkey
Utilisation de @capgo/capacitor-passkey
Conservez votre style de navigateur WebAuthn code dans une application Capacitor tout en laissant le plugin gérer les appels de passkey natifs et la mise à jour de l'hôte natif.
Browser-style API
@capgo/capacitor-passkey l'authentification WebAuthn conserve le même flux 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(), transmet la demande aux API de passkey iOS et Android, et renvoie des objets de credenciaux similaires à ceux du navigateur à votre application.
Installer et synchroniser les projets natifs
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 la configuration du plugin fait
La configuration est lue à partir de plugins.CapacitorPasskey en capacitor.config.*.
origin: origine HTTPS de confiance primaire utilisée par le shim et directement APIdomains: hôtes de confiance supplémentaires à intégrer dans la configuration native lors de la synchronisationautoShim: par défauttrueet contrôle la configuration nativecap syncl'hameçon d'auto-configuration
Exécutez à nouveau la synchronisation après avoir modifié la configuration :
bunx cap sync
Installez l'hameçon lors du démarrage du bootstrap
Importez le plugin à partir de l'entrée de package standard, puis installez l'hameçon lors du démarrage de l'application :
import { CapacitorPasskey } from '@capgo/capacitor-passkey';
await CapacitorPasskey.autoShimWebAuthn();
After cela, votre passkey existant de style navigateur code peut rester le 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',
});
Conservez votre flux WebAuthn normal
const credential = await navigator.credentials.create({
publicKey: registrationOptions,
});
const assertion = await navigator.credentials.get({
publicKey: requestOptions,
});
Quels correctifs synchronisent pour vous
Lors de 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'il le faut
- Android :
asset_statementsles 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 passkeys dépendent toujours 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-associationhttps://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.
Autres méthodes publiques
Le plugin public API expose également les helpers directs définis dans src/definitions.ts:
await CapacitorPasskey.getConfiguration()renvoie la résolutionorigin,domains,autoShim, et actuelplatform.await CapacitorPasskey.createCredential(...)enregistre une clé de passe à partir d'un payload WebAuthn sécurisé JSON.await CapacitorPasskey.getCredential(...)s'authentifie avec une clé de passe existante à partir d'un payload WebAuthn sécurisé 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.
Avertissement Android important
Le gestionnaire de clés Android peut partager la même partie de confiance et les clés de passe comme 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 arrière-plan valide strictement clientDataJSON.originassurez-vous qu'il accepte l'origine de l'application Android en plus de l'origine de votre site web.
Référence complète
- GitHub : https://github.com/Cap-go/capacitor-passkey/
- Docs : /docs/plugins/passkey/
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-l’avec @capgo/capacitor-passkey pour les détails d'implémentation dans @capgo/capacitor-passkey, Prise en main pour les détails d'implémentation dans Prise en main, @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 Authentification à deux facteurs pour les détails d'implémentation dans Authentification à deux facteurs.