メインコンテンツへスキップ
@capgo/capacitor-passkey 認証とセキュリティ オープンソース

パスキー Capacitor プラグイン

Capacitor でブラウザスタイルの WebAuthn code を維持しつつ、ネイティブのpasskey呼び出しとホストパッチングは自動で処理されます

インストール

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

ガイド

Capacitor で Passkey を使用する方法

@capgo/capacitor-passkey を使用する

プラグインがネイティブの passkey 呼び出しとネイティブホストのパッチ適用を行うため、Capacitor アプリ内でブラウザスタイルの WebAuthn code を維持できます。

ブラウザ形式の API

@capgo/capacitor-passkey Webですでに使っているWebAuthnフローをそのまま維持します:

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

Native Buildでは、このプラグインがshimをインストールし、 navigator.credentials.create() と navigator.credentials.get()リクエストをiOS/Androidのpasskey APIに転送して、ブラウザと同様のcredentialオブジェクトをアプリに返します。

ネイティブプロジェクトのインストールと同期

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: shimおよび直接の API が使用するプライマリHTTPS relying-party origin
  • domains: sync 時にネイティブ設定へパッチする追加の relying-party ホスト名
  • autoShim: デフォルト値は true およびネイティブの cap sync 自動設定フック

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

bunx cap sync

ブートストラップ時に shim をインストールする

標準パッケージのエントリポイントからプラグインをインポートし、アプリのブートストラップ中に shim をインストールします:

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

await CapacitorPasskey.autoShimWebAuthn();

その後、既存のブラウザ形式の passkey code はそのまま使えます。

実行時に shim を強制したり、設定済みの origin を上書きしたりする必要がある場合は、以下を呼び出します:

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: 必要に応じて associated domains entitlements と Xcode entitlements を設定
  • Android: asset_statements メタデータ、および manifest で使用される生成リソース

ネイティブセットアップには引き続きウェブサイトの信頼ファイルが必要です

このプラグインによりアプリ側の作業は軽減されますが、パスキーは依然として Relying Party ドメインのウェブサイト信頼ファイルに依存します。以下のファイルをホストする必要があります:

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

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

その他の公開メソッド

公開プラグイン API は、以下で定義されている直接呼び出せるヘルパーも公開しています: src/definitions.ts:

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

プラットフォーム別ガイド

iOSに関する重要な注意点

iOS 17.4以降では、このプラグインはブラウザ形式のclient-data API を使用するため、設定されたHTTPS originが clientDataJSON.

Androidに関する重要な注意点

Digital Asset Linksが設定されていれば、Android Credential Managerはウェブサイトと同じrelying partyやpasskeyを共有できますが、ネイティブのassertion originはブラウザのoriginとは異なります。バックエンドで厳密に検証している場合、 clientDataJSON.origin、ウェブサイトのオリジンに加えてAndroidアプリのオリジンも許可されていることを確認してください。

リファレンス全文

@capgo/capacitor-passkey の使用方法から進む

使用している場合 @capgo/capacitor-passkey を使用する 認証とアカウントフローを計画するには、これを次と連携させてください @capgo/capacitor-passkey @capgo/capacitor-passkey の実装詳細については、 スタートガイド スタートガイドの実装詳細については、 @capgo/capacitor-social-login @capgo/capacitor-social-login の実装の詳細については、 @capgo/capacitor-native-biometric @capgo/capacitor-native-biometric の実装の詳細、および 2要素認証 二要素認証の実装の詳細については。

よくある質問

Passkey plugin よくある質問

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

"bun add @capgo/capacitor-passkey"(または "npm install @capgo/capacitor-passkey")を実行した後、"bunx cap sync" を実行して、iOS および Android プロジェクトにネイティブの code を反映させてください。その後、アプリの code で "@capgo/capacitor-passkey" からインポートします。

@capgo/capacitor-passkey は React、Vue、Angular で動作しますか?

はい。Passkey は Capacitor パッケージなので、Ionic、React、Vue、Angular、Svelte、およびプレーンな JavaScript を含む、Capacitor 内で動作するあらゆる Web フレームワークで使用できます。

@capgo/capacitor-passkey はどの Capacitor バージョンをサポートしていますか?

Capgo プラグインは Capacitor のメジャーバージョンに合わせています。使用している Capacitor のメジャーバージョンに一致するプラグインのメジャーバージョンを使ってください (例: Capacitor 8 ならプラグイン v8)。GitHub の README にある互換性テーブルに、メンテナンス中のバージョンが記載されています。

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

はい。code のソースコードは GitHub の https://github.com/Cap-go/capacitor-passkey/ で公開されており、パッケージは npm から無料でインストールできます。バグ報告やプルリクエストをお待ちしています。

App Store の審査なしで、Passkey を使用している code をアップデートできますか?

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

アプリの審査を待たずにPasskeyの変更をリリース

プラグインをストア用ビルドに組み込めば、Capgo live updates で JavaScript、HTML、CSS の変更を数分でユーザーに配信できます

Capgo から始める