6.3.3. パスワードなしのブラウザーログインフローの作成

フローの作成については、このセクションでは、より高度なブラウザーログインフローの作成について説明します。このフローの目的は、WebAuthn を使用してパスワードなしの方法でログインと、パスワードと OTP を使用した二要素認証を選択することができます。作成するフローは標準のブラウザーログインと似ていますが、ユーザー名の選択に到達すると分岐します。ただし、フローをコピーする代わりに、最初からフローを作成します。

  • レルムを選択し、認証リンクをクリックします。
  • 「new」を選択し、新規フローに固有のエイリアス (つまり「Browser Password-less」)を付与します。
  • 「Add execution」を選択し、ドロップダウンを使用して「Cookie」を選択します。「Save」を押すと、Requirement を Alternative に設定します。
  • 「Add execution」を選択し、ドロップダウンメニューで「Kerberos」を選択します。
  • 「Add execution」を選択し、ドロップダウンを使用して「Identity Provider Redirector」を選択します。「Save」を押すと、Requirement を Alternative に設定します。
  • 「Add flow」を選択し、たとえば典型的なエイリアスを選択します。たとえば「Forms」です。「Save」を押すと、Requirement を Alternative に設定します。

ブラウザーフローの共通部分

Passwordless browser login common

  • 「Forms」サブフローの右側にある Actions メニューを使用して、「Add execution」を選択します。ドロップダウンを使用して「Username Form」を選択します。「Save」を押した後、その Requirement を Required に設定します。

Username フォームは「Browser」フローのユーザー名フォームと似ていますが、ユーザーはパスワードなしのログインを実行できるように、ユーザー名のみを要求します。ただし、これにより Red Hat Single Sign-On サーバーでユーザーの列挙攻撃が可能になります。これは、利便性に避けられないセキュリティーリスクであるため、フローではユーザーが入力すべきパスワードに推測する必要はないはずです。

  • 「Forms」サブフローの右側にある Actions メニューを使用して、「Add flow」を選択します。代表的なエイリアスを選択します。たとえば、「Authentication」となります。「Save」を押した後、その Requirement を Required に設定します。
  • 「Authentication」サブフローの右側にある Actions メニューを使用して、「Add execution」を選択します。ドロップダウンを使用して、「WebAuthn passwordless Authenticator」を選択します。「Save」を押すと、Requirement を Alternative に設定します。
  • 「 Authentication」サブフローの右側にある Actions メニューを使用して、「Add flow」を選択します。代表的なエイリアスを選択します。たとえば、「Password with OTP」です。「Save」を押すと、Requirement を Alternative に設定します。
  • 「Password with OTP」サブフローの右側にある Actions メニューを使用して、「Add execution」を選択します。ドロップダウンを使用して、「Password Form」を選択します。「Save」を押した後、その Requirement を Required に設定します。
  • 「Password with OTP」サブフローの右側にある Actions メニューを使用して、「Add execution」を選択します。ドロップダウンを使用して、「OTP Form」を選択します。「Save」を押した後、その Requirement を Required に設定します。
  • 「Bindings」メニューで、ブラウザーフローを「Browser」から「Browser Password-less」に変更します。

生成される最終フローは以下のとおりです。

パスワードなしのブラウザーログイン

Passwordless browser login

ユーザー名の入力後、このフローが機能する仕組みは以下のようになります。

  • ユーザーに WebAuthn パスワードレス認証情報が記録されている場合は、そのユーザーは、直接ログインするためにそれらを使用できます。これはパスワードなしのログインです。代わりに「Password with OTP」を選択できます。これは、"WebAuthn Passwordless" 実行と "Password with OTP" フローが Alternative に設定されているため、これを実行できます。Required に設定されている場合、ユーザーは WebAuthn、password、および OTP を入力する必要があります。
  • ユーザーが「WebAuthn パスワードレス」認証を使用して画面 で Try another way を選択する場合、ユーザーは「Password」と「Security Key」(WebAuthn パスワードレス) のいずれかを選択できます。パスワードを選択すると、ユーザーは 続行して、割り当てられた OTP とともにログインする必要があります。ユーザーに WebAuthn 認証情報がない場合は、最初にパスワードを入力し、続いて OTP を入力する必要があります。ユーザーが OTP 認証情報がない場合は、記録が要求されます。

WebAuthn パスワードレス実行は、Required ではなく Alternative に設定されているため、このフローではユーザーに WebAuthn 認証情報を登録するように要求されることはありません。ユーザーに Webauthn 認証情報を取得するには、そのユーザーに管理者が必要なアクションを追加する必要があります。最初に、Webauthn Register Passwordless が必要なアクションがレルムで有効になっていることを確認した後 (WebAuthn ドキュメンテーションを参照)、ユーザーの Credentials 管理メニューの Credential Reset を使用して必要なアクションを設定します。

このような高度なフローを複数作成すると、副次的な影響があります。たとえば、ユーザーのパスワードをリセットできるようにする必要がある場合は、パスワードフォームからアクセスが可能になります。デフォルトの「Reset Credentials」フローでは、ユーザーは自分のユーザー名を入力する必要があります。「Browser Password-less」フローですでにユーザー名をすでに入力されているため、Red Hat Single Sign-On では必要がなく、ユーザーエクスペリエンスの面ではサブ最適となります。これを修正するには、以下が可能になります。

  • 「Reset Credentials」フローをコピーし、「パスワードなしの認証情報の設定」など、その名前を設定します。
  • 「Choose user」実行の右側にある Actions メニューを使用して、「Delete」を選択します。
  • 「Bindings」メニューで、「Reset Credentials」から「Reset Credentials for password-less」に対するリセットの認証情報フローを変更します。