Panduan
Tutorial tentang Passkey
Menggunakan @capgo/capacitor-passkey
Simpan gaya browser WebAuthn code di aplikasi Capacitor sementara plugin mengelola panggilan passkey native dan patching host native.
Gaya browser API
@capgo/capacitor-passkey Gaya browser __CAPGO_KEEP_0__ mempertahankan alur WebAuthn yang sama yang Anda gunakan di web:
await navigator.credentials.create({ publicKey: registrationOptions });
await navigator.credentials.get({ publicKey: requestOptions });
Pada build native, plugin menginstal shim untuk navigator.credentials.create() dan navigator.credentials.get()Mengirimkan permintaan ke API passkey iOS dan Android, dan mengembalikan objek kreditur seperti browser ke aplikasi Anda.
Instal dan sinkronkan proyek native
bun add @capgo/capacitor-passkey
bunx cap sync
Konfigurasi aplikasi host sekali
Tambahkan konfigurasi plugin di capacitor.config.ts atau 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;
Apa yang dilakukan konfigurasi plugin
Konfigurasi dibaca dari plugins.CapacitorPasskey di capacitor.config.*.
origin: asal HTTPS utama partai yang dipercaya oleh shim dan API secara langsungdomains: nama host partai tambahan untuk memperbaiki konfigurasi native selama sinkronisasiautoShim: default ketruedan mengontrol nativecap synchook konfigurasi otomatis
Jalankan sinkronisasi lagi setelah mengubah konfigurasi:
bunx cap sync
Pasang shim selama bootstrap
Import plugin dari entri paket standar, kemudian pasang shim selama aplikasi bootstrap:
import { CapacitorPasskey } from '@capgo/capacitor-passkey';
await CapacitorPasskey.autoShimWebAuthn();
After that, your existing browser-style passkey code can stay the same.
Jika Anda perlu memaksa shim atau mengganti asal yang sudah diatur pada waktu runtime, silakan panggil:
import { CapacitorPasskey } from '@capgo/capacitor-passkey';
CapacitorPasskey.shimWebAuthn({
origin: 'https://signin.example.com',
});
Tetapkan aliran WebAuthn normal Anda
const credential = await navigator.credentials.create({
publicKey: registrationOptions,
});
const assertion = await navigator.credentials.get({
publicKey: requestOptions,
});
Apa yang diperbarui secara sinkron
Pada saat bunx cap syncPlugin ini memperbarui proyek host native yang dihasilkan:
- iOS: hak akses domain terkait dan pengaturan Xcode ketika diperlukan
- Android:
asset_statementsmetadata dan sumber daya yang dihasilkan yang digunakan oleh manifest
Pengaturan native masih memerlukan file kepercayaan website
Plugin ini mengurangi pekerjaan di sisi aplikasi, tetapi passkey masih bergantung pada file kepercayaan website untuk domain pihak yang bertanggung jawab. Anda masih perlu menyimpan:
https://your-domain/.well-known/apple-app-site-associationhttps://your-domain/.well-known/assetlinks.json
Plugin ini dapat memperbarui proyek host native yang dihasilkan selama sinkron, tetapi tidak dapat membuat atau menyimpan file kepercayaan website tersebut untuk Anda.
Metode publik lainnya
Plugin publik API juga mengungkapkan bantuan langsung yang ditentukan dalam src/definitions.ts:
await CapacitorPasskey.getConfiguration()mengembalikan nilai yang terpecahkanorigin,domains,autoShim, dan saat iniplatform.await CapacitorPasskey.createCredential(...)mendaftarkan sebuah passkey dari payload WebAuthn yang aman JSON.await CapacitorPasskey.getCredential(...)otentikasi dengan passkey yang sudah ada dari payload WebAuthn yang aman JSON.await CapacitorPasskey.isSupported()melaporkan apakah runtime saat ini mendukung passkeys.await CapacitorPasskey.getPluginVersion()mengembalikan versi marker implementasi native saat ini.
Petunjuk platform
Peringatan iOS yang Penting
Pada iOS 17.4 dan yang lebih baru, plugin menggunakan klien-data gaya browser API sehingga asal HTTPS yang dikonfigurasi tercermin di clientDataJSON.
Peringatan Android yang Penting
Pengelola Kredensial Android dapat berbagi pihak yang dipercaya dan kunci pasword dengan situs web Anda ketika Digital Asset Links dikonfigurasi, tetapi asal asertasi native tidak identik dengan asal browser. Jika backend Anda secara ketat memvalidasi clientDataJSON.originPastikan Anda menerima asal aplikasi Android di samping asal situs web Anda.
Referensi Lengkap
- GitHub: https://github.com/Cap-go/capacitor-passkey/
- Dokumen: /docs/plugins/passkey/
Teruskan dari Menggunakan @capgo/capacitor-passkey
Jika Anda menggunakan Gunakan @capgo/capacitor-passkey untuk merencanakan autentikasi dan alur akun, hubungkannya dengan @capgo/capacitor-passkey untuk detail implementasi di @capgo/capacitor-passkey, Mulai untuk detail implementasi di Mulai, @capgo/capacitor-social-login untuk detail implementasi di @capgo/capacitor-social-login, @capgo/capacitor-native-biometric untuk detail implementasi di @capgo/capacitor-native-biometric, dan Autentikasi Dua Faktor untuk detail implementasi di Autentikasi Dua Faktor.