パスキーの概要

ウェブ機能: ウェブ認証

このガイドでは、最新のウェブ アプリケーションで、フレームワークに依存しない安全なパスキー認証と認証情報管理を実装するための、高密度でアクション指向のオリエンテーションを提供します。

1. パスキーの主な前提条件

パスキーは Web Authentication API(WebAuthn)に依存しています。WebAuthn では、実装を試みる前に満たす必要がある、厳格な横断的セキュリティ制約が課されます。

  • 安全なコンテキスト: WebAuthn メソッド(navigator.credentials.create と navigator.credentials.get)は、安全なコンテキストの背後に厳密に制限されています。アプリケーションは、本番環境では https:// で、ローカル開発では http://localhost で実行する必要があります。
  • リライング パーティ(RP)ID: すべての認証情報は RP ID(基本的にはアプリケーションのドメイン名)に関連付けられます。サーバーサイドのオプションで渡される RP ID は、現在のオリジンのドメイン名と一致するか、有効なサフィックスである必要があります(例: example.com は login.example.com に対して有効)。一致しない場合、クライアントサイドで SecurityError 例外が発生します。

2. AAGUID UX の注意点

Authenticator Attestation Globally Unique Identifier(AAGUID)は、登録証明データで返される 128 ビットの固有識別子で、認証システムのモデル / プロバイダ(Google パスワード マネージャー、iCloud キーチェーン、1Password など)を表します。

  • UX ヒントのみ: 証明書利用者は、UX ヒント(ユーザーを支援するために管理リストにパスキー プロバイダの名前とアイコンを表示するなど)にのみ AAGUID を使用する必要があります。
  • セキュリティ依存関係なし: アプリケーションは、暗号化セキュリティまたはアクセス決定に AAGUID を使用してはなりません。プラットフォーム パスキーは現在、AAGUID の暗号化構成証明を提供していません。つまり、ユーザー エージェントによって変更またはシミュレートされる可能性があります。

3. 分離されたライブラリの推奨事項

バックエンドの FIDO2 / WebAuthn オプションの生成と署名の検証では、デベロッパーは、暗号を手動でロールするのではなく、言語ごとに検証済みのオープンソース ライブラリを使用しなければなりません。

  • JavaScript / TypeScript: SimpleWebAuthn(github.com/MasterKale/SimpleWebAuthn)
  • Python: py_webauthn(github.com/duo-labs/py_webauthn)
  • Java: Java WebAuthn Server(github.com/Yubico/java-webauthn-server)、WebAuthn4J(github.com/webauthn4j/webauthn4j)
  • .NET: FIDO2 用 .NET ライブラリ(github.com/abergs/fido2-net-lib)
  • Go: WebAuthn Go Library(github.com/go-webauthn/webauthn)
  • Ruby: WebAuthn Ruby(github.com/cedarcode/webauthn-ruby)
  • PHP: WebAuthn Framework(github.com/web-auth/webauthn-framework)

4. ユースケース参照マトリックス

以下のユースケースから該当するものを特定し、その実装ガイド全体を確認してください。すべてのユースケースには、ユースケースごとのガイドにのみ記載されている重要な API(PublicKeyCredential.parseCreationOptionsFromJSON、parseRequestOptionsFromJSON、signalAllAcceptedCredentials、signalCurrentUserDetails、signalUnknownCredential、条件付きメディエーション、AAGUID 処理など)があります。この取得ステップをスキップしないでください。また、クライアントでサードパーティのライブラリ ラッパー(SimpleWebAuthn の startAuthentication/startRegistration など)を代わりに使用しないでください。ネイティブの WebAuthn ブラウザ API を直接呼び出してください。セクション 3 のライブラリの推奨事項は、サーバーサイド(バックエンド FIDO2 検証)にのみ適用されます。

パスキーと WebAuthn の具体的な実装の詳細については、次のガイドをご覧ください。