安全でシームレスなパスキー: デプロイ チェックリスト

公開日: 2025 年 6 月 5 日

パスキーは、ログイン方法に革命を起こすように設計されており、パスワードに代わるよりシンプルで高速かつ安全な方法を提供します。このチェックリストは、パスキーを実装して最適なユーザー エクスペリエンス(UX)を実現するための重要な要素をまとめたものです。

このチェックリストの使用方法

このチェックリストは、認証フローにパスキーを実装するデベロッパーとプロダクト チームを対象としています。適した用途:

  • 実装が、次の記事で説明されている最新のパスキー UX のベスト プラクティスに準拠していることを確認します。
  • ユーザビリティ、セキュリティ、互換性を向上させるために必要な要素とオプションの要素を特定します。
  • 開発中とデプロイ前に実装を確認します。
  • ユーザーの導入とシステムの相互運用性をサポートするベスト プラクティスに沿って対応します。

これらは、エンドユーザーにスムーズで安全なエクスペリエンスを提供するために役立ちます。

パスキーの登録

ウェブサイトでパスワードからパスキーへのスムーズな移行を実現するには、高度なパスキー登録機能が重要です。パスワードなしでログインするためのパスキーを作成するの手順に沿って、ウェブサイトにパスキー登録機能を構築します。基本的なパスキー登録機能に加えて、確認すべき項目は次のとおりです。

✅ 昇格されたパスキーの作成のために navigator.credentials.create() に渡す認証システムの添付ファイルの値として "platform" を指定します。

  • パスキーをリアクティブに作成するユーザー向けに、最適化されたスムーズなパスキー作成フローを提供します。

✅ パスキーの作成を許可する前に、ユーザーが使用できる最も強力な認証方法でユーザーを確認します。

  • これは、乗っ取られたアカウントで攻撃者がパスキーを作成するのを防ぐうえで重要です。

excludeCredentials を使用して、同じパスキー プロバイダの重複するパスキーが作成されないようにします。

  • 多くのパスキー プロバイダは、アカウントと RP ID ごとに 1 つのパスキーのみに対応しています。重複の作成を避けます。

AAGUID を使用してパスキー プロバイダを識別し、ユーザーの認証情報に名前を付けます。

  • パスキーをパスキー プロバイダに関連付けることは、可能な場合に認証情報を提示する直感的な方法です。

✅ パスキーの登録試行が PublicKeyCredential.signalUnknownCredential() で失敗した場合にシグナルを送信します。

  • パスキーが残っていると、混乱が生じる可能性があります。サーバーがパスキーの登録に失敗した場合は、パスキー プロバイダに通知します。

✅ アカウントのパスキーを作成して登録した後、ユーザーに通知を送信します。

  • パスキーが作成されたことをユーザーが認識していることを確認します。特に、他のユーザーが作成した場合は注意が必要です。

パスキー認証

パスワード ユーザーとパスキー ユーザーの両方を最小限の摩擦で対応することは難しい場合があります。フォームの自動入力でパスキーを使用してログインするで説明されている手順に沿って、ウェブサイトにパスキー フォームの自動入力機能を構築します。基本的なパスキー認証機能に加えて、確認すべき事項は次のとおりです。

✅ ユーザーがフォームの自動入力でパスキーを使用してログインできるようにします。

  • ウェブサイトでパスワードからパスキーへの移行が行われている場合、両方のユーザーに対応する最善の方法は、ブラウザのフォーム自動入力機能を使用することです。

✅ パスキーの一致する認証情報がバックエンドで見つからない場合は、PublicKeyCredential.signalUnknownCredential() でシグナルを送信します。

  • パスキーが残っていると、混乱が生じる可能性があります。使用できないパスキーをパスキー プロバイダに通知して、プロバイダがそのパスキーを削除できるようにします。

✅ ログイン後にパスキーを作成していないユーザーに対して、パスキーを手動で作成するよう求める。

  • ユーザーがまだパスキーを作成していない場合は、パスキーを作成するよう促します。

✅ ユーザーがパスワード(と第 2 要素)でログインした後に、パスキーを自動的に作成(条件付き作成)します。

  • ユーザーによるパスキーの導入を促進します。

ユーザーがクロスデバイス パスキーでログインしている場合、ローカル パスキーの作成を求めるプロンプトを表示します。

  • ローカル パスキーを作成すると、次回から QR コードをスキャンせずにログインできます。

✅ ログイン後、利用可能なパスキーのリスト更新されたユーザーの詳細(ユーザー名、表示名)をプロバイダに通知する

  • パスキー リストとユーザーの詳細をサーバーとパスキー プロバイダ間で同期することで、ユーザー エクスペリエンスが向上します。

パスキーの管理

ユーザーがパスキーを十分に理解することで、状況をよりよく把握し、パスキーをより適切に管理できるようになります。ユーザーがパスキーを効果的に管理できるようにするで説明されている手順に沿って、ウェブサイトにパスキー管理機能を構築します。確認すべき項目を以下に挙げます。

✅ ユーザーがパスキー管理ページでパスキーを管理できるようにします。

  • ユーザーがパスキーを管理できる一元的な場所を作成します。

複数のパスキーの登録をサポートします。

  • 複数のパスキーを登録できるため、ユーザーはより弱い認証方法にフォールバックすることなく、ロックアウトを防ぐことができます。

✅ ユーザーが管理ページで新しい柔軟なタイプのパスキーを追加できるようにします。

パスキー名を表示します。

  • AAGUID に基づいてパスキーに名前を付け、ユーザーのパスキーを視覚的にわかりやすく表示します。

✅ パスキーが同期可能か同期不可能かを示す。

  • パスキーが同期されていないことをユーザーに知らせる。

✅ ユーザーがサーバーから公開鍵を削除できるようにします。

✅ 関連付けられた公開鍵がサーバーから削除されたときに、パスキーのリストを通知します。

  • サーバーとパスキー プロバイダ間でパスキー リストを同期させると、ユーザー エクスペリエンスが向上します。
ベスト プラクティスが表示されているパスキー管理ページの例。
ベスト プラクティスを示すパスキー管理ページの例。

その他の考慮事項

✅ ユーザーが更新したときに、更新されたユーザーの詳細(ユーザー名、表示名)を通知します。

ユーザーが [パスワードを忘れた場合] を選択したときに、新しいパスワードではなくパスキーを作成する

リソース