パスワードレス認証チュートリアル
このシナリオでは、パスワードは削除されました。つまり、パスワードはインターネット経由で送信されたり、データベースに保存されたりしません。
WebAuthnのフローは、 2要素認証 のケースとまったく同じです。
1. 登録
-
1
ユーザー情報入力
2. 認証
パスワードが削除されたので、登録したクレデンシャルの認証のみ行います。
-
1
ユーザー名入力
サーバーから登録したクレデンシャルIDのリストを取得するため、ユーザー名が必要です。次に、認証器は適切なクレデンシャルを選択し、認証サーバーに送信します。
パラメータ説明
以下はクレデンシャルの登録の時に使用するパラメータです。
<script>
// 可能の値:none (デフォルト), direct, indirect
let attestation = "none"; // Replying Party (RP)は、認証器の証明が必要がないこと
let authenticatorSelection = {
// 可能の値:<empty> (デフォルト), platform, cross-platform
'authenticatorAttachment': "", // RPは認証器のタイプを指定しないこと。ユーザーは使用したい認証器を選択できます。
// 可能の値:preferred, required, discouraged (デフォルト)
'userVerification': "discouraged", // RPは、操作中にユーザー確認(user verification)を行わないこと
// 可能の値:true, false (デフォルト)
'requireResidentKey': false // 公開鍵クレデンシャルを生成した時、認証器はクライアント側に常駐する公開鍵クレデンシャルソースを生成する必要がないこと
};
</script>
RPは、クレデンシャルの生成中に認証器の検証に関する優先度を指定できます。 Attestation パラメータは、以下の3つの値があります。
- none: RPは認証器の証明が必要がないこと。
- indirect: RPは認証器の検証を優先しますが、クライアントは、検証で使うステートメントを取得する方法を決定できます。
- direct: RPは、認証器が生成した検証ステートメントを受信したいこと。
このデモでは、デファクト値が使用されています。RPサーバーは高いセキュリティーが必要な場合は、 "direct" を使用して、クライアントに完全なステートメントを強制的に返させる必要があります。
他の UserVerification 値は 多要素認証 シナリオで説明します。
また、 RequireResidentKey の使い方は ユーザー名なしの認証 シナリオで説明します。
以下はクレデンシャルの認証の時に使用するパラメータです。
<script>
// 可能の値:preferred, required, discouraged (デフォルト)
let userVerification = "discouraged"; // RPは、操作中にユーザー確認(user verification)を行わないこと
</script>
RPはこれらのパラメータを指定しない場合、FIDO2認証サーバーはデフォルト値と設定します。