2要素認証チュートリアル

2要素認証とは?

2要素認証(2FAまたは2段階認証)は、2つの異なる要素種類の組み合わせを使用して、ユーザーのオンラインIDを確認する方法です。パスワードは通常に1つの要素(something you know - 知識情報)と見なされます。FIDO2では、セキュリティーキー(something you have - 所持情報)、またはバイオメトリクス(something you are - 生体情報)を2番目の要素として使用できます。

1. 登録

  • 1

    ユーザー情報入力

    ユーザーを識別するための特定のユーザー名、またはメールアドレス。
    表示のみを目的とした、わかりやすい名前。
    デモ目的では、パスワードは保存されません。

2. 認証

以下は2要素認証を使用するログインシナリオです。

  • ステップ1:ユーザー名+パスワード入力
  • ユーザー名とパスワードを確認します。正しかったら、 ステップ2:認証器の確認

  • 1

    パスワード認証

    登録したユーザー名
    デモ目的では、パスワードは保存されません。「password」と入力してください!

パラメータ説明

以下はクレデンシャルの登録の時に使用するパラメータです。


<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認証サーバーはデフォルト値と設定します。