メインコンテンツにジャンプ
@capgo/capacitor-パスキー セキュリティ & 認証 オープンソース

パスキー Capacitor プラグイン

ブラウザスタイルの WebAuthn code を Capacitor 内に保持し、ネイティブ パスキー コールとホスト パッチングは自動で行われます

インストール

bun add @capgo/capacitor-passkey bunx cap sync
npm、pnpm、またはyarn
  • npm install @capgo/capacitor-passkey
  • pnpm add @capgo/capacitor-passkey
  • yarn add @capgo/capacitor-passkey

ガイド

Passkeyを使用する方法はCapacitor

capgo/capacitor-passkeyを使用

ブラウザスタイルのWebAuthn codeをアプリ内でCapacitorし、プラグインはネイティブのパスキー呼び出しとネイティブホストのパッチングを処理します。

ブラウザスタイルAPI

@capgo/capacitor-passkey __CAPGO_KEEP_0__はすでにウェブで使用しているWebAuthnフローを維持します:

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

ネイティブビルドでは、プラグインは navigator.credentials.create() and navigator.credentials.get()ネイティブプロジェクトをインストールして同期

ホストアプリを一度設定

bun add @capgo/capacitor-passkey
bunx cap sync

プラグイン設定を追加

または capacitor.config.ts アプリフロー 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;

プラグインの設定は何をするか

設定は plugins.CapacitorPasskey から読み込まれます capacitor.config.*.

  • origin: primary HTTPS relying-party origin used by the shim and direct API
  • domains: native設定にパッチするために追加の依存関係ホスト名
  • autoShim: デフォルトは true で制御され、native cap sync の自動構成ハック

設定を変更した後は再度syncを実行してください

bunx cap sync

アプリ起動時にshimをインストールする

標準パッケージエントリポイントからプラグインをインポートし、アプリ起動時にshimをインストールする

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

await CapacitorPasskey.autoShimWebAuthn();

その後、既存のブラウザスタイルのパスワードcodeは変更する必要はありません

実行時には、 shim を強制するか、構成済みのオリジンをオーバーライドするには、次の呼び出しを行ってください:

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

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

通常の WebAuthn フローを維持してください

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

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

あなたのために Sync のパッチが作成されます

中 bunx cap sync, プラグインは生成されたネイティブホストプロジェクトを更新します:

  • iOS: 必要に応じて関連ドメインの特権と Xcode の特権のワイヤリング
  • Android: asset_statements メタデータと生成されたリソースの使用されるマニフェスト

ネイティブセットアップは依然としてウェブサイトの信頼ファイルが必要です

プラグインはアプリ側の作業を減らしますが、パスキーは依然としてウェブサイトの信頼ファイルに依存しています。ウェブサイトの信頼ファイルをホストする必要があります。

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

プラグインはSyncの際に生成されたネイティブプロジェクトをパッチできますが、ウェブサイトの信頼ファイルを作成またはホストすることはできません。

その他の公開メソッド

パブリックプラグイン API も、WebAuthn ペイロードの直接ヘルパーを定義したものを公開します。 src/definitions.ts:

  • await CapacitorPasskey.getConfiguration() WebAuthn ペイロードを解決します。 origin, domains, autoShim現在の platform.
  • await CapacitorPasskey.createCredential(...) JSON セーフな WebAuthn ペイロードからパスキーを登録します。
  • await CapacitorPasskey.getCredential(...) JSON セーフな WebAuthn ペイロードから既存のパスキーで認証します。
  • await CapacitorPasskey.isSupported() 現在のランタイムがパスキーをサポートしているかどうかを報告します。
  • await CapacitorPasskey.getPluginVersion() 現在のネイティブ実装バージョンマーカーを返します。

プラットフォームガイド

iOS に関する重要な注意事項

iOS 17.4 以降では、プラグインはブラウザスタイルのクライアントデータ API を使用するため、構成された HTTPS 起源は API に反映されます。 clientDataJSON.

Android に関する重要な注意事項

Android Credential Manager は、Digital Asset Links が構成されている場合に、ウェブサイトと同じ依存パーティーとパスキーを共有できますが、ネイティブのアサーション起源はブラウザ起源と同一ではありません。バックエンドが厳密に検証する場合 clientDataJSON.origin、ウェブサイトの起源と Android アプリの起源を両方とも受け入れるようにしてください。

完全なリファレンス

@capgo/capacitor-パスキーを継続して使用

Capacitor-Passkey を使用している場合 Using @capgo/capacitor-passkey 認証とアカウントフローの計画と接続 @capgo/capacitor-パスキー @capgo/capacitorパスキーの実装詳細 はじめに Getting Startedの実装詳細については @capgo/capacitor-ソーシャルログイン @capgo/capacitor-ソーシャルログインの実装詳細 @capgo/capacitor-ネイティブバイオメトリック for the @capgo/capacitor-native-biometric implementation detail in 2要素認証 2要素認証の実装詳細については

FAQ

PasskeyプラグインのFAQ

PasskeyプラグインをCapacitorアプリにインストールするにはどうすればいいですか?

「bun add @capgo/capacitor-passkey」(または「npm install @capgo/capacitor-passkey」)を実行し、次に「bunx cap sync」を実行してiOSとAndroidのプロジェクトがネイティブcodeを取得できるようにします。次に、@capgo/capacitor-passkeyをインポートしてアプリcodeに追加します。

@capgo/capacitor-passkeyはReact、Vue、Angularとどのように動作するですか?

Yes. Passkey is a Capacitor package, so it works with any web framework that runs inside Capacitor, including Ionic, React, Vue, Angular, Svelte and plain JavaScript.

どのCapacitorバージョンが@capgo/capacitor-passkeyによってサポートされていますか?

Capgo plugins follow Capacitor's major version: use the plugin major version that matches your Capacitor major version (for example plugin v8 with Capacitor 8). The compatibility table in the GitHub README lists the maintained versions.

Capgoの@capgo/capacitor-passkeyは無料でオープンソースですか?

Yes. The source code is public on GitHub at https://github.com/Cap-go/capacitor-passkey/ and the package is free to install from npm. Bug reports and pull requests are welcome.

CapgoのcodeをPasskeyが使用している場合にApp Storeのレビューなしでアップデートできますか?

プラグインをインストールまたはアップグレードすると、ネイティブのcodeが変更されるため、新しいストアのビルドが必要になります。その後、Capgoのライブアップデートで、JavaScript、HTML、CSSの変更がプラグインを呼び出すとすぐに配信できます。

Passkeyの変更をアプリレビューの待たずに配信

プラグインがストアビルドに追加されたら、Capgo ライブアップデートは、ユーザーにJavaScript、HTML、CSSの変更を数分で反映

Capgo で始めよう