パスキーを使用したユーザー認証

ユーザー認証はWebAuthnセレモニー(手続き)であり、ユーザー(あなた)がユーザーのクライアント(少なくとも1つの認証器接続されたブラウザ)を使用して、以前に登録された認証情報の公開鍵に対応する秘密鍵を制御しているユーザであることを、Relying Party(Webアプリケーション)に対して暗号技術を使って証明します。

つまり、ユーザーは、登録セレモニー中に生成された認証情報の秘密鍵を自分が所有することをRelying Partyに提示し、認証トランザクションに同意します。

1チャレンジとその他の認証オプションを取得

認証器には、Relying Partyのセキュリティ要件を満たす認証に使用する認証情報の公開鍵を検出するためのパラメータ(認証オプション)が必要です。

認証オプションには、リプレイ攻撃を回避するために、サーバー側などの信頼できる環境でRelying Partyによってランダムに生成されるチャレンジを含める必要があります。

このデモでは、必要な認証オプションをサーバーから取得できます。

2パスキーの認証情報を選択

クライアント側では、Relying PartyがWeb Authentication APIのnavigator.credentials.get()メソッドを呼び出し、非対称暗号に基づく公開鍵認証情報を使用してユーザーを認証します。

Relying Partyは、このメソッドに認証オプションを渡します。これにより、クライアントは、認証のためにユーザーに提示できる認証器と認証情報を絞り込むための基準として、渡された認証オプションを使用します。

ユーザーは、認証情報を取得し、認証セレモニーを続行することに同意する必要があります。そのため、認証器はユーザーが意図しているかの確認を実行するために、認証器との物理的なやりとり(タップや生体認証の入力など)となる認可ジェスチャを実施するように求めるUIを表示します。

画面に表示されるプロンプトに従って、認証器を操作します。

3パスキーの認証情報の検証

Relying Partyサーバーは、認証プロセスを完了するために、認証情報IDに関連付けられた格納された認証情報の公開鍵を使用して署名されたチャレンジをチェックすることにより、アサーション レスポンスを検証する必要があります。

そのため、Relying Partyクライアントアプリケーションは、認証情報ID、ユーザーID、署名付きチャレンジを含むアサーション レスポンスをRelying Partyサーバーに送信する必要があります。

4ユーザープロファイル情報を取得する

パスキーを使用してログインすると、ユーザー名などのユーザープロファイル情報と、アカウントに関連付けられたパスキーのリストが表示されます。各パスキーのエントリには、パスキー名と、パスキーを作成または最後に使用した日時が表示されます。

別のデバイスからサインイン

パスキーの作成に使用した認証器によっては、別のクライアントデバイスやプラットフォームからデモアプリにログインできる場合があります。

同期パスキー を使うとシームレスに複数のデバイスでログインできます。試しに、例えば、スマートフォンで表示されたURLを入力し(または、QRコードを読み取り)ウェブページに遷移し、同期パスキーの挙動とを確認することができます。

パスキーのデモを完了する

同期パスキーの挙動をご確認いただけましたらパスキーの削除の方法をご覧ください。これでデモは終了となるので、デモデータを削除していただいても問題ありません。