9.11. Post login flow
ログイン後フローは、特定のアイデンティティープロバイダーでログインするたびに追加の認証アクションをトリガーする必要がある場合に役立ちます。たとえば、Facebook ではログイン時に二要素認証がないため、Red Hat build of Keycloak が Facebook にログインするたびに二要素認証をトリガーする必要がある場合があります。
必要な手順で認証フローを設定したら、アイデンティティープロバイダーを設定するときに、その認証フローを Post login flow として設定します。
9.11.1. Post login flow の例 リンクのコピーリンクがクリップボードにコピーされました!
9.11.1.1. アイデンティティープロバイダーのログイン後に二要素認証を要求する リンクのコピーリンクがクリップボードにコピーされました!
最も簡単な方法は、特定の二要素方式を使用して認証を強制することです。たとえば、OTP を要求する場合、単一のオーセンティケーターのみが設定されていると、フローは次のようになります。このタイプのフローでは、ユーザーのアカウントに OTP が設定されていない場合、アイデンティティー提供による最初のログイン時にユーザーに OTP を設定するように求めます。
OTP を使用した 2FA post login flow
より複雑な設定では、ALTERNATIVE として設定された二要素認証方法を複数含めることができます。この場合、ユーザーのアカウントにまだ二要素認証が設定されていない場合は、いずれかの方法を設定するようにユーザーを促すようにします。これは次のように実行できます。
-
First login flow で、二要素認証方法の 1 つが
REQUIREDとして設定されていることを確認します。この方法は、アイデンティティープロバイダーのログインで全ユーザーを登録する場合に有効です。 -
二要素認証方式を
ALTERNATIVEとして、2FAなどの条件付きサブフローにラップし、OTP if no 2FAなどの別の条件付きサブフローを作成します。これは、前のサブフローが実行されなかった場合にのみトリガーされ、ユーザーに二要素認証方式の 1 つ (例: OTP) を追加するように求めます。同様のフロー設定の例は 認証フローの章の条件セクション に記載されています。
9.11.2. 専用クライアントの追加認証手順の要求 リンクのコピーリンクがクリップボードにコピーされました!
場合によっては、クライアントまたはクライアントのグループがアイデンティティープロバイダーのログイン後に追加の手順を実行する必要があります。以下は、クライアントスコープ foo がリクエストれた場合に、アイデンティティープロバイダーのログイン後にユーザーが OTP で認証する必要があることを規定するフローの例です。
クライアントスコープと OTP を使用する 2FA post login flow
これは、指定されたクライアントスコープをリクエストするための Condition - client scope を設定する例です。
2FA post login flow client scope 設定
要求されたクライアントには、このクライアントスコープがデフォルトまたはオプションとして設定されている必要があります。後者の場合、フローはクライアントスコープがクライアントによって要求された場合にのみ実行されます (例: OIDC/OAuth2 クライアントログインの場合は scope パラメーター)。