Guía
Tutorial sobre Passkey
Usando @capgo/capacitor-passkey
Mantén su estilo de navegador WebAuthn code en una aplicación Capacitor mientras el complemento maneja llamadas de passkey nativas y parches de host nativos.
Estilo de navegador API
@capgo/capacitor-passkey mantiene el mismo flujo de WebAuthn que ya utiliza en la web:
await navigator.credentials.create({ publicKey: registrationOptions });
await navigator.credentials.get({ publicKey: requestOptions });
En compilaciones nativas, el complemento instala un shim para navigator.credentials.create() y navigator.credentials.get(), envía la solicitud a las API de passkey de iOS y Android, y devuelve objetos de credenciales como en un navegador a tu aplicación.
Instalar y sincronizar proyectos nativos
bun add @capgo/capacitor-passkey
bunx cap sync
Configura la aplicación anfitriona una vez
Agrega la configuración del plugin en capacitor.config.ts o 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é hace la configuración del plugin?
La configuración se lee desde plugins.CapacitorPasskey en capacitor.config.*.
origin: origen de HTTPS principal de la parte de confianza utilizado por el shim y directo APIdomains: nombres de host adicionales de la parte de confianza para parchear en la configuración nativa durante la sincronizaciónautoShim: se establece por defectotruey controla la configuración nativacap syncde la función de ganchillo de configuración automática
Ejecuta la sincronización nuevamente después de cambiar la configuración:
bunx cap sync
Instale el shim durante el arranque
Importe el plugin desde el punto de entrada estándar del paquete, luego instale el shim durante el arranque de la aplicación:
import { CapacitorPasskey } from '@capgo/capacitor-passkey';
await CapacitorPasskey.autoShimWebAuthn();
Después de eso, su existente code de autenticación de navegador puede seguir siendo el mismo.
Si necesita forzar el shim o sobrescribir el origen configurado en tiempo de ejecución, llame a:
import { CapacitorPasskey } from '@capgo/capacitor-passkey';
CapacitorPasskey.shimWebAuthn({
origin: 'https://signin.example.com',
});
Mantenga su flujo normal de WebAuthn
const credential = await navigator.credentials.create({
publicKey: registrationOptions,
});
const assertion = await navigator.credentials.get({
publicKey: requestOptions,
});
¿Qué parches sincroniza para usted?
Durante bunx cap sync, el plugin actualiza los proyectos de anfitrión nativos generados:
- iOS: permisos de dominios asociados y configuración de permisos de Xcode cuando sea necesario
- Android:
asset_statementsmetadatos y el recurso generado utilizado por el manifiesto
La configuración nativa sigue necesitando archivos de confianza de sitio web
The plugin reduce el trabajo en el lado del aplicación, pero las claves de paso todavía dependen de los archivos de confianza del sitio web para tu dominio de partido de confianza. Todavía necesitas alojar:
https://your-domain/.well-known/apple-app-site-associationhttps://your-domain/.well-known/assetlinks.json
El plugin puede parchear los proyectos nativos generados durante la sincronización, pero no puede crear ni alojar esos archivos de confianza del sitio web para ti.
Otros métodos públicos
El plugin público API también expone los ayudantes directos definidos en src/definitions.ts:
await CapacitorPasskey.getConfiguration()devuelve el valor resueltoorigin,domains,autoShim, y actualplatform.await CapacitorPasskey.createCredential(...)registra una clave de paso a partir de un payload WebAuthn seguro JSON.await CapacitorPasskey.getCredential(...)autentica con una clave de paso existente a partir de un payload WebAuthn seguro JSON.await CapacitorPasskey.isSupported()informa si el runtime actual admite claves de paso.await CapacitorPasskey.getPluginVersion()devuelve el marcador de versión de implementación nativa actual.
Guías de plataforma
Nota importante de iOS
En iOS 17.4 y posteriores, el complemento utiliza el cliente de datos estilo navegador API por lo que el origen HTTPS configurado se refleja en clientDataJSON.
Caveata importante de Android
El administrador de credenciales de Android puede compartir la misma parte interesada confiable y claves de acceso como su sitio web cuando se configuran los enlaces de activos digitales, pero el origen de la afirmación nativa no es idéntico a un origen de navegador. Si su backend valida estrictamente clientDataJSON.originAsegúrese de que acepte el origen de la aplicación de Android junto con el origen de su sitio web.
Referencia completa
- GitHub: https://github.com/Cap-go/capacitor-passkey/
- Documentación: /docs/plugins/passkey/
Seguir adelante desde @capgo/capacitor-passkey
Si estás utilizando Usando @capgo/capacitor-passkey para planificar la autenticación y los flujos de cuenta, conecta con @capgo/capacitor-passkey para los detalles de implementación en @capgo/capacitor-passkey, Inicio de Sesión para los detalles de implementación en Inicio de Sesión, @capgo/capacitor-social-login para los detalles de implementación en @capgo/capacitor-social-login, @capgo/capacitor-native-biometric para los detalles de implementación en @capgo/capacitor-native-biometric, y Autenticación en dos factores para el detalle de implementación en Autenticación en dos factores.