8.6. W3C Web Authentication (WebAuthn)

Red Hat Single Sign-On は、W3C Web 認証 (WebAuthn) のサポートを提供します。Red Hat Single Sign-On は、WebAuthn の Relying Party(RP) として機能します。

注記

WebAuthn 操作が成功するかどうかは、オーセンティケーター、ブラウザー、およびプラットフォームをサポートするユーザーの WebAuthn によります。オーセンティケーター、ブラウザー、およびプラットフォームが WebAuthn 仕様をサポートしていることを確認してください。

8.6.1. 設定

2FA の WebAuthn サポートの設定手順は、以下のようになります。

8.6.1.1. WebAuthn オーセンティケーター登録の有効化

  1. メニューで Authentication をクリックします。
  2. Required Actions タブをクリックします。
  3. Register をクリックします。
  4. Required Action ドロップダウンリストをクリックします。
  5. Webauthn Register をクリックします。
  6. Ok をクリックします。

すべての新規ユーザーに WebAuthn 認証情報の登録を要求する必要がある場合は、Default Action チェックボックスにマークを付けます。

8.6.1.2. WebAuthn 認証のブラウザーフローへの追加

  1. メニューで Authentication をクリックします。
  2. Browser フローをクリックします。
  3. Copy をクリックして、ビルトインの Browser フローのコピーを作成します。
  4. コピーの名前を入力します。
  5. Ok をクリックします。
  6. WebAuthn Browser- Conditional OTPActions リンクをクリックし、Delete をクリックします。
  7. Delete をクリックします。

全ユーザーの WebAuthn が必要な場合は、以下を実行します。

  1. WebAuthn Browser FormsActions リンクをクリックします。
  2. Add execution をクリックします。
  3. Provider ドロップダウンリストをクリックします。
  4. WebAuthn Authenticator をクリックします。
  5. Save をクリックします。
  6. WebAuthn AuthenticatorREQUIRED をクリックします。

    webauthn browser flow required

  7. Bindings タブをクリックします。
  8. Browser Flow ドロップダウンリストをクリックします。
  9. WebAuthn Browser をクリックします。
  10. Save をクリックします。
注記

ユーザーに WebAuthn 認証情報がない場合、ユーザーは WebAuthn 認証情報を登録する必要があります。

WebAuthn 認証情報が登録されている場合に限り、ユーザーは WebAuthn でログインできます。そのため、WebAuthn Authenticator 実行を追加する代わりに、以下を実行できます。

手順

  1. WebAuthn Browser FormsActions リンクをクリックします。
  2. Add flow をクリックします。
  3. Alias フィールドに Conditional 2FA を入力します。
  4. Save をクリックします。
  5. Conditional 2FACONDITIONAL をクリックします。
  6. Conditional 2FAActions リンクをクリックします。
  7. Add execution をクリックします。
  8. Provider ドロップダウンリストをクリックします。
  9. Condition - User Configured をクリックします。
  10. Save をクリックします。
  11. Conditional 2FAREQUIRED をクリックします。
  12. Conditional 2FAActions リンクをクリックします。
  13. Add execution をクリックします。
  14. Provider ドロップダウンリストをクリックします。
  15. WebAuthn Authenticator をクリックします。
  16. Save をクリックします。
  17. Conditional 2FAALTERNATIVE をクリックします。

    webauthn browser flow conditional

ユーザーは、2 つ目の要素に WebAuthn または OTP のいずれかを使用することを選択できます。

手順

  1. Conditional 2FAActions リンクをクリックします。
  2. Add execution をクリックします。
  3. Provider ドロップダウンリストをクリックします。
  4. ITP Form をクリックします。
  5. Save をクリックします。
  6. Conditional 2FAALTERNATIVE をクリックします。

    webauthn browser flow conditional with OTP

8.6.2. WebAuthn オーセンティケーターを使用した認証

WebAuthn オーセンティケーターを登録した後に、ユーザーは以下の操作を実行します。

  • ログインフォームを開きます。ユーザーは、ユーザー名とパスワードで認証する必要があります。
  • ユーザーのブラウザーは、WebAuthn オーセンティケーターを使用して認証することをユーザーに要求します。

8.6.3. 管理者として WebAuthn の管理

8.6.3.1. 認証情報の管理

Red Hat Single Sign-On は、ユーザー認証情報の管理 からの他の認証情報と同様に、WebAuthn 認証情報を管理します。

  • Red Hat Single Sign-On は、Reset Actions のリストから WebAuthn 認証情報を作成するのに必要なアクションをユーザーに割り当て、Webauthn Register を選択します。
  • 管理者は Delete をクリックして WebAuthn 認証情報を削除できます。
  • 管理者は、Show data…​ を選択して、AAGUID などの認証情報のデータを表示することができます。
  • 管理者は、User Label フィールドに値を設定し、データを保存することで、認証情報のラベルを設定できます。

8.6.3.2. ポリシーの管理

管理者は、WebAuthn 関連の操作をレルムごとに WebAuthn Policy として設定できます。

手順

  1. メニューで Authentication をクリックします。
  2. WebAuthn Policy タブをクリックします。
  3. ポリシー内で項目を設定します (以下の説明を参照してください)。
  4. Save をクリックします。

設定可能な項目とその説明は以下のとおりです。

設定説明

エンティティー名の使用

WebAuthn Relying Party として読み取り可能なサーバー名。この項目は必須であり、WebAuthn オーセンティケーターの登録に適用されます。デフォルト設定は keycloak です。詳細は、WebAuthn Specification を参照してください。

署名アルゴリズム

アルゴリズム。公開鍵認証情報 に使用する署名アルゴリズムを WebAuthn オーセンティケーターに指示します。Red Hat Single Sign-On は、公開鍵認証情報を使用して 認証アサーション に署名し、検証します。アルゴリズムが存在しない場合は、デフォルトの ES256 が適合されます。ES256 は、WebAuthn オーセンティケーターの登録に適用されるオプションの設定項目です。詳細は、WebAuthn Specification を参照してください。

パート ID の使用

公開鍵認証情報 のスコープを決定する WebAuthn Relying Party の ID。ID は、オリジンの有効なドメインでなければなりません。この ID は、WebAuthn オーセンティケーターの登録に適用されるオプションの設定項目です。このエントリーが空白の場合、Red Hat Single Sign-On は Red Hat Single Sign-On のベース URL のホスト部分を適合します。詳細は、WebAuthn の仕様 を参照してください。

証明の伝達設定

ブラウザーでの WebAuthn API 実装 (WebAuthn Client) は、Attestation ステートメントを生成するのに推奨される方法です。この設定は、WebAuthn オーセンティケーターの登録に適用されるオプションの設定項目です。オプションが存在しない場合、その動作は none の選択と同じになります。詳細は、WebAuthn の仕様 を参照してください。

オーセンティケーター添付

WebAuthn Client に対する WebAuthn オーセンティケーターの許容割り当てパターン。このパターンは、WebAuthn オーセンティケーターの登録に適用されるオプションの設定項目です。詳細は、WebAuthn Specification を参照してください。

識別キーが必要

WebAuthn オーセンティケーターが クライアント側の公開鍵認証情報ソース として公開鍵認証情報を生成することを要求するオプション。このオプションは、WebAuthn オーセンティケーターの登録に適用されます。空欄のままにすると、その動作は No の選択と同じになります。詳細は、WebAuthn の仕様 を参照してください。

ユーザー検証要件

WebAuthn オーセンティケーターがユーザーの検証を確認することを要求するオプション。これは、WebAuthn オーセンティケーターの登録と、WebAuthn オーセンティケーターによるユーザーの認証に適用される任意の設定項目です。オプションが存在しない場合、その動作は preferred の選択と同じになります。詳細は、WebAuthn Specification for registering a WebAuthn authenticator および WebAuthn Specification for authenticating the user by a WebAuthn authenticator を参照してください。

タイムアウト

WebAuthn オーセンティケーターを登録し、WebAuthn オーセンティケーターを使用してユーザーを認証する際のタイムアウト値 (秒単位)。ゼロに設定すると、その動作は WebAuthn オーセンティケーターの実装により異なります。デフォルト値は 0 です。詳細は、WebAuthn Specification for registering a WebAuthn authenticator および WebAuthn Specification for authenticating the user by a WebAuthn authenticator を参照してください。

同じオーセンティケーター登録の回避

有効にすると、Red Hat Single Sign-On は、すでに登録されている WebAuthn オーセンティケーターを再登録できません。

許可される AAGUID

WebAuthn オーセンティケーターが登録する必要のある AAGUID のホワイトリスト。

8.6.4. 証明ステートメントの検証

WebAuthn オーセンティケーターを登録すると、Red Hat Single Sign-On は、WebAuthn オーセンティケーターが生成した証明ステートメントの信頼性を検証します。Red Hat Single Sign-On では、これにトラストアンカーの証明書が必要です。Red Hat Single Sign-On は Keycloak トラストストア を使用するので、事前にこれらの証明書をインポートする必要があります。

この検証を省略するには、このトラストストアを無効にするか、WebAuthn ポリシーの設定項目 Attestation Conveyance Preference を none に設定します。

8.6.5. ユーザーとして WebAuthn 認証情報の管理

8.6.5.1. WebAuthn オーセンティケーターの登録

WebAuthn オーセンティケーターを登録する適切な方法は、ユーザーが Red Hat Single Sign-On にアカウントを登録しているかどうかによって異なります。

8.6.5.2. 新規ユーザー

レルムで WebAuthn Register の必須操作がDefault Action の場合、新規ユーザーは初回ログインの後に WebAuthn セキュリティーキーを設定する必要があります。

手順

  1. ログインフォームを開きます。
  2. Register をクリックします。
  3. フォームの項目に入力します。
  4. Register をクリックします。

登録に成功すると、ブラウザーは、ユーザーに対して WebAuthn オーセンティケーターのラベルのテキストを入力するよう要求します。

8.6.5.3. 既存ユーザー

最初の例のように WebAuthn Authenticator が必要に応じて設定されている場合、既存のユーザーがログインを試みる際に、WebAuthn オーセンティケーターを自動的に登録する必要があります。

手順

  1. ログインフォームを開きます。
  2. フォームの項目に入力します。
  3. Save をクリックします。
  4. Login をクリックします。

登録に成功すると、ユーザーのブラウザーは、ユーザーに対して WebAuthn オーセンティケーターのラベルのテキストを入力するよう要求します。

8.6.6. パスワードなしの WebAuthn と 2 つのファクターの組み合わせ

Red Hat Single Sign-On は、2 要素認証に WebAuthn を使用しますが、第一要素認証として WebAuthn を使用できます。この場合、パスワードなし の WebAuthn 認証情報を持つユーザーは、パスワードなしで Red Hat Single Sign-On に対して認証できます。Red Hat Single Sign-On では、レルムおよび単一の認証フローのコンテキストで、パスワードなしおよび 2 要素の認証メカニズムの両方として WebAuthn を使用できます。

管理者は、通常、WebAuthn パスワードレス認証用にユーザーが登録するセキュリティーキーが異なる要件を満たすことを要求します。たとえば、ユーザーは、PIN を使用してセキュリティーキーに対して認証することが要求される場合があります。あるいは、セキュリティーキーを強力な認証局で認証する必要があります。

このため、Red Hat Single Sign-On では、管理者は個別の WebAuthn Passwordless Policy を設定できます。必須の Webauthn Register Passwordless アクションタイプと、別の WebAuthn Passwordless Authenticator オーセンティケータータイプがあります。

8.6.6.1. 設定

手順

以下のように WebAuthn パスワードレスサポートを設定します。

  1. WebAuthn パスワードレスサポートに新しい必須アクションを登録します。WebAuthn Authenticator 登録を有効にする で説明されている手順を使用します。Webauthn Register Passwordless アクションを登録します。
  2. ポリシーを設定します。ポリシーの管理 で説明されている手順と設定オプションを使用できます。管理コンソールのWebAuthn Passwordless Policy タブで、設定を実行します。通常、セキュリティーキーの要件は、2 要素ポリシーよりもより強力になります。たとえば、パスワードレスポリシーの設定時に、User Verification RequirementRequired に設定できます。
  3. 認証フローを設定します。WebAuthn 認証をブラウザーフローに追加する で説明されている WebAuthn ブラウザー フローを使用します。以下のようにフローを設定します。

    • WebAuthn Browser Forms サブフローには、最初のオーセンティケーターとして Username Form が含まれます。デフォルトの Username Password Form オーセンティケーターを削除し、Username Form オーセンティケーターを追加します。このアクションでは、ユーザーに最初のステップとしてユーザー名を提供することを要求します。
    • 必須のサブフローがある場合があります (例: Passwordless Or Two-factor)。このサブフローは、ユーザーが Passwordless WebAuthn 認証情報または Two-factor 認証で認証できることを示しています。
    • フローには、第一の代替として WebAuthn Passwordless Authenticator が含まれます。
    • 2 つ目の代替は、Password And Two-factor Webauthn (例) という名前のサブフローです。このサブフローには、Password Form および WebAuthn Authenticator が含まれます。

フローの最終的な設定は以下のようになります。

PasswordLess フロー

PasswordLess flow

Red Hat Single Sign-On にすでに知られているユーザーに、必須アクションとして WebAuthn Register Passwordless を追加してテストできるようになりました。第一の認証時に、ユーザーはパスワードおよび第二要素の WebAuthn 認証情報を使用する必要があります。WebAuthn Passwordless 認証情報を使用する場合、ユーザーはパスワードおよび第二要素の WebAuthn 認証情報を提供する必要はありません。

8.6.7. LoginLess WebAuthn

Red Hat Single Sign-On は、2 要素認証に WebAuthn を使用しますが、第一要素認証として WebAuthn を使用できます。この場合、パスワードなし の WebAuthn 認証情報を持つユーザーは、ログインやパスワードなしで Red Hat Single Sign-On に対して認証できます。Red Hat Single Sign-On は、レルムのコンテキストで、ログインレス/パスワードレスおよび 2 要素認証メカニズムの両方として WebAuthn を使用できます。

管理者は、通常、WebAuthn ログインレス認証用にユーザーが登録するセキュリティーキーが異なる要件を満たすことを要求します。ログインレス認証では、ユーザーがセキュリティーキーに対して認証する必要があり (たとえば、PIN コードまたは指紋を使用して)、ログインレスクレデンシャルに関連付けられた暗号化キーがセキュリティーキーに物理的に保存されている必要があります。すべてのセキュリティーキーがそのような要件を満たしているわけではありません。デバイスがユーザー検証および常駐キーをサポートしているかどうかをセキュリティーキーベンダーに確認してください。サポートされているセキュリティーキー を参照してください。

Red Hat Single Sign-On により、管理者はログインレス認証を可能にする方法で WebAuthn Passwordless Policy を設定できます。ログインレス認証は、WebAuthn Passwordless PolicyWebAuthn Passwordless クレデンシャルでのみ設定できることに注意してください。WebAuthn ログインレス認証と WebAuthn パスワードレス認証は同じレルムで設定できますが、同じポリシー WebAuthn Passwordless Policy ポリシーを共有します。

8.6.7.1. 設定

手順

以下のように WebAuthn ログインレスサポートを設定します。

  1. WebAuthn パスワードレスサポートに新しい必須アクションを登録します。WebAuthn Authenticator 登録を有効にする で説明されている手順を使用します。Webauthn Register Passwordless アクションを登録します。
  2. WebAuthn Passwordless Policy を設定します。管理コンソールの Authentication セクションの WebAuthn Passwordless Policy タブで設定を実行します。ログインレスシナリオのポリシーを設定するときは、User Verification Requirementrequired に、Require Resident KeyYes に設定する必要があります。専用のログインレスポリシーがないため、認証シナリオをユーザー verification=no/resident key=no および loginless のシナリオと混在させることはできません (ユーザー verification=yes/resident key=yes)。ストレージ容量は通常、セキュリティーキーによって非常に制限されています。つまり、多くの常駐キーをセキュリティーキーに保存できません。
  3. 認証フローを設定します。新しい認証フローを作成し、WebAuthn Passwordless 実行を追加して、実行の Requirement 設定を Required に設定します

フローの最終的な設定は以下のようになります。

LoginLess フロー

LoginLess flow

Red Hat Single Sign-On にすでに知られているユーザーに、必須アクションとして WebAuthn Register Passwordless を追加してテストできるようになりました。必須アクションが設定されているユーザーは、(たとえば、ユーザー名/パスワードを使用して) 認証する必要があり、ログインレス認証に使用するセキュリティーキーを登録するように求められます。

8.6.7.2. ベンダー固有のマーク

8.6.7.2.1. 互換性チェックリスト

Red Hat Single Sign-On を使用したログインレス認証には、次の機能を満たすためのセキュリティーキーが必要です

  • FIDO2 コンプライアンス: FIDO/U2F と混同しないでください
  • ユーザー検証: セキュリティーキーがユーザーを認証する機能 (誰かがセキュリティーキーを見つけてログインなしおよびパスワードなしで認証できるようにする)
  • 常駐キー: クライアントアプリケーションに関連付けられたログインキーと暗号化キーを保存するセキュリティーキーの機能
8.6.7.2.2. Windows Hello

Windows Hello ベースの認証情報を使用して Red Hat Single Sign-On に対して認証するには、WebAuthn Passwordless PolicySignature Algorithms 設定に RS256 値を含めるように設定します。一部のブラウザーでは、プライベートウィンドウ内のプラットフォームセキュリティーキー (Windows Hello など) へのアクセスが許可されていないことに注意してください。

8.6.7.2.3. サポートされているセキュリティーキー

以下のセキュリティーキーは、Red Hat Single Sign-On を使用したログインレス認証で正常にテストされています。

  • Windows Hello (Windows 10 21H1/21H2)
  • Yubico Yubikey 5 NFC
  • Feitian ePass FIDO-NFC