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

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

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

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

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

これにより、エンドユーザーにスムーズで安全なエクスペリエンスを提供できます。

パスキーの登録

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

✅ プロモートされたパスキーの作成のために navigator.credentials.create() に渡す認証情報の添付値として "platform" を指定します。

  • パスキーを事後的に作成するユーザー向けに、最適化されたスムーズなパスキー作成フローを提供する。

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

  • これは、攻撃者が不正使用したアカウントでパスキーを作成できないようにするために重要です。

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

  • 多くのパスキー プロバイダでは、アカウントと RP ID ごとに 1 つのパスキーしか使用できません。重複の作成を避ける。

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

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

✅ パスキーの登録が失敗した場合は、PublicKeyCredential.signalUnknownCredential() で通知します。

  • パスキーが紛失すると混乱が生じる可能性があります。サーバーがパスキーを登録できなかった場合は、パスキー プロバイダに通知します。

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

  • パスキーが作成されることをユーザーに伝えます(特に、他のユーザーが作成する場合)。

パスキー認証

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

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

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

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

  • パスキーが紛失すると混乱が生じる可能性があります。使用できないパスキーをパスキー プロバイダに伝え、プロバイダが削除できるようにします。

✅ ユーザーがログイン後にパスキーを作成していない場合は、パスキーを手動で作成するようユーザーにプロンプトを表示します。

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

✅ ユーザーがパスワード(および 2 番目の要素)でログインした後に、パスキーを自動的に作成する(条件付き作成)

  • ユーザーのパスキーの導入を迅速化。

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

  • ローカル パスキーを作成すると、次回以降は QR コードをスキャンしなくてもログインできます。

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

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

パスキーの管理

パスキーについてユーザーに十分に説明することで、ユーザーは状況をよりよく理解し、パスキーを適切に管理できるようになります。ユーザーがパスキーを効果的に管理できるようにするの手順に沿って、ウェブサイトにパスキー管理機能を構築します。確認すべき点は次のとおりです。

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

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

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

  • 複数のパスキーを登録できる機能により、ユーザーは安全性の低い認証方法にフォールバックすることなく、ロックアウトを回避できます。

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

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

  • AAGUID に基づいてパスキーに名前を付け、ユーザーのパスキーの具体的なビジュアルを提供します。

✅ パスキーが同期可能か同期不可かを指定します。

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

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

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

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

その他の考慮事項

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

ユーザーが「パスワードを忘れた」場合は、新しいパスワードではなくパスキーを作成

リソース