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 オーセンティケーター登録の有効化
- メニューで Authentication をクリックします。
- Required Actions タブをクリックします。
- Register をクリックします。
- Required Action ドロップダウンリストをクリックします。
- Webauthn Register をクリックします。
- Ok をクリックします。
すべての新規ユーザーに WebAuthn 認証情報の登録を要求する必要がある場合は、Default Action チェックボックスにマークを付けます。
8.6.1.2. WebAuthn 認証のブラウザーフローへの追加
- メニューで Authentication をクリックします。
- Browser フローをクリックします。
- Copy をクリックして、ビルトインの Browser フローのコピーを作成します。
- コピーの名前を入力します。
- Ok をクリックします。
- WebAuthn Browser- Conditional OTP の Actions リンクをクリックし、Delete をクリックします。
- Delete をクリックします。
全ユーザーの WebAuthn が必要な場合は、以下を実行します。
- WebAuthn Browser Forms の Actions リンクをクリックします。
- Add execution をクリックします。
- Provider ドロップダウンリストをクリックします。
- WebAuthn Authenticator をクリックします。
- Save をクリックします。
WebAuthn Authenticatorの REQUIRED をクリックします。
- Bindings タブをクリックします。
- Browser Flow ドロップダウンリストをクリックします。
- WebAuthn Browser をクリックします。
- Save をクリックします。
ユーザーに WebAuthn 認証情報がない場合、ユーザーは WebAuthn 認証情報を登録する必要があります。
WebAuthn 認証情報が登録されている場合に限り、ユーザーは WebAuthn でログインできます。そのため、WebAuthn Authenticator 実行を追加する代わりに、以下を実行できます。
手順
- WebAuthn Browser Forms の Actions リンクをクリックします。
- Add flow をクリックします。
- Alias フィールドに Conditional 2FA を入力します。
- Save をクリックします。
- Conditional 2FAで CONDITIONAL をクリックします。
- Conditional 2FA の Actions リンクをクリックします。
- Add execution をクリックします。
- Provider ドロップダウンリストをクリックします。
- Condition - User Configured をクリックします。
- Save をクリックします。
- Conditional 2FA の REQUIRED をクリックします。
- Conditional 2FA の Actions リンクをクリックします。
- Add execution をクリックします。
- Provider ドロップダウンリストをクリックします。
- WebAuthn Authenticator をクリックします。
- Save をクリックします。
Conditional 2FA の ALTERNATIVE をクリックします。
ユーザーは、2 つ目の要素に WebAuthn または OTP のいずれかを使用することを選択できます。
手順
- Conditional 2FA の Actions リンクをクリックします。
- Add execution をクリックします。
- Provider ドロップダウンリストをクリックします。
- ITP Form をクリックします。
- Save をクリックします。
Conditional 2FA の ALTERNATIVE をクリックします。
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 として設定できます。
手順
- メニューで Authentication をクリックします。
- WebAuthn Policy タブをクリックします。
- ポリシー内で項目を設定します (以下の説明を参照してください)。
- 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 セキュリティーキーを設定する必要があります。
手順
- ログインフォームを開きます。
- Register をクリックします。
- フォームの項目に入力します。
- Register をクリックします。
登録に成功すると、ブラウザーは、ユーザーに対して WebAuthn オーセンティケーターのラベルのテキストを入力するよう要求します。
8.6.5.3. 既存ユーザー
最初の例のように WebAuthn Authenticator
が必要に応じて設定されている場合、既存のユーザーがログインを試みる際に、WebAuthn オーセンティケーターを自動的に登録する必要があります。
手順
- ログインフォームを開きます。
- フォームの項目に入力します。
- Save をクリックします。
- 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 パスワードレスサポートを設定します。
-
WebAuthn パスワードレスサポートに新しい必須アクションを登録します。WebAuthn Authenticator 登録を有効にする で説明されている手順を使用します。
Webauthn Register Passwordless
アクションを登録します。 - ポリシーを設定します。ポリシーの管理 で説明されている手順と設定オプションを使用できます。管理コンソールのWebAuthn Passwordless Policy タブで、設定を実行します。通常、セキュリティーキーの要件は、2 要素ポリシーよりもより強力になります。たとえば、パスワードレスポリシーの設定時に、User Verification Requirement を Required に設定できます。
認証フローを設定します。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 フロー
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 Policy
と WebAuthn Passwordless
クレデンシャルでのみ設定できることに注意してください。WebAuthn ログインレス認証と WebAuthn パスワードレス認証は同じレルムで設定できますが、同じポリシー WebAuthn Passwordless Policy
ポリシーを共有します。
8.6.7.1. 設定
手順
以下のように WebAuthn ログインレスサポートを設定します。
-
WebAuthn パスワードレスサポートに新しい必須アクションを登録します。WebAuthn Authenticator 登録を有効にする で説明されている手順を使用します。
Webauthn Register Passwordless
アクションを登録します。 -
WebAuthn Passwordless Policy
を設定します。管理コンソールのAuthentication
セクションのWebAuthn Passwordless Policy
タブで設定を実行します。ログインレスシナリオのポリシーを設定するときは、User Verification Requirement を required に、Require Resident Key を Yes に設定する必要があります。専用のログインレスポリシーがないため、認証シナリオをユーザー verification=no/resident key=no および loginless のシナリオと混在させることはできません (ユーザー verification=yes/resident key=yes)。ストレージ容量は通常、セキュリティーキーによって非常に制限されています。つまり、多くの常駐キーをセキュリティーキーに保存できません。 - 認証フローを設定します。新しい認証フローを作成し、WebAuthn Passwordless 実行を追加して、実行の Requirement 設定を Required に設定します
フローの最終的な設定は以下のようになります。
LoginLess フロー
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 Policy
の Signature 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