概要
Keycloakにて多要素認証を設定する方法を記載します。
ユーザがブラウザからログインする時に、ID + パスワードに加えてワンタイムパスワード(OTP)も入力させるようにしたい、という状況を想定しています。
前提条件
- Keycloakがセットアップ済みであること
※本記事ではKeyCloak 24.0.4を例に解説します。 - FreeOTPやMicrosoft Authenticatorなどのモバイル認証アプリを所有していること(動作確認で利用します)
手順
管理画面にログイン
Keycloak管理画面にログインします。
Realm選択
メニュー左上のプルダウンから対象のRealmを選択して下さい。デフォルトで作成されているMaster Realmは管理用であり通常のユーザー認証には利用しないため選択しないで下さい。テスト的に試すということであれば、Master Realmでも良いと思います。
認証フロー作成
認証フローとは、ユーザがログインする時にどのような認証手順を踏むかを定義したものです。デフォルトで定義されてはいますが、設定を変更したく無いので、今回は新しくフローを定義します。
左メニューの Authentication を押下し、Flows タブで、browser フローが存在することを確認して下さい。
次に、browser > Action > Duplicateを押下します。下記のようにDuplicate flowの画面が表示されるので任意の名前を設定し、Duplicate を押下します。
認証フローが作成されるので、
Action > Bind flow を押下します。
Bind flowの画面では、Browser flowを選択し、Saveを押下します。
これで、作成した認証フローが適用されます。

ワンタイムパスワード(OTP)を有効化
左メニューの Authentication を押下し、Authenticationの画面に遷移します。
Required actionsタブ > Configure OTPのSet as default actionをOnにします。
これで、新規に作成するユーザについては多要素認証が有効化されたはずですので、動作確認します。
テスト用のユーザを作成してみて、途中以下のようにAuthenticatorのセットアップを促すメッセージが表示されるかどうかをご確認下さい。

Authenticatorをセットアップしたら、ワンタイムパスワードを入力することでユーザ作成が完了するはずです。
今後新規に作成するユーザについては多要素認証が有効化されましたが、既に存在しているユーザに関してはまだ有効化されていません。
既存ユーザについては、左メニューの Users を押下し対象ユーザのDetailsタブにて、Required user actionsでConfigure OTPを選択することで有効化できます。
次回ログイン時に、上述のAuthenticatorセットアップを促すメッセージが表示されるはずですのでご確認下さい。
参考




