OktaとAzure ADをフェデレーションした後にPINやWindows Helloの認証でループした話
はじめに
2022年10月1日からAzure ADのユーザーがMFAを求められるようになったので、OktaをIdPとしてAzure ADとのフェデレーションを設定しました。
(それまではSWAのままにしていました)
参考にした記事は↓となります。
thdyさんこの場を借りてお礼申し上げます…🙇♂️
この記事ではその後にハマったことを記載しています。
ハマったこと
thdyさんのこの記事を参考にAzure ADとのフェデレーションを設定し意気揚々とWindowsの検証機を初期化→再セットアップしていました。
PINの設定でOktaの認証がループする
Windows11 Proの設定を初期セットアップを進めていくと、道中PINの設定を求められます。
設定しようとするとOktaの認証を求められるのでいつも通り認証すると…

↑の画面でループし、最終的にエラーが吐き出されました。
Okta MFA from Azure ADはEnableにしてるのになんで…?という感じです。

Okta MFA from Azure ADの設定
推測
Webで色々と調べているとこのドキュメントがHitしました

結局何を言っているかというと、Azure AD側でMFAを有効にしているのに、Oktaのアプリ側のSign in PolicyでMFAが有効になっていないと無限ループに陥るよ。ってことです(多分)
ここで1つ設定を思い出します。
今回のフェデレーションの設定でWindowsのログインにOktaのパスワードを使えるようにSign in Policyを変更しました。

元々、Client isにはWeb browserとModern Authenticationだけが入っていましたが、WindowsへのログインのためにExchange Active Syng/Legacy Authを追加しました。
それでその下にご丁寧に書いていました。
The Exchange ActiveSync/Legacy Auth limits the rule to password-based authentication only. See
「Exchange Active Syng/Legacy Authがあるとルールをパスワードのみに制限するよ!!」
これは良いんですが、同じルールに入っているWeb browserとModern AuthenticationもMFAがDisableと同義になっちゃったんですね(推測)

赤枠の部分がPasswordから変更出来なくなってしまっていました
解決方法
Ruleを分けます。
OktaのAdmin画面からSecurity > Authentication policies > Microsoft Office 365(環境によって名前違うかも)に入ります
まずは新しいRuleを作ります。
Ruleに注釈が入れられないので、Rule nameを分かりやすくした方が良いです。
今回はNot Legacy Authとしました。
Client isの項目でOne of the following clients:を選択し、Web browserとModern Authentication追加します。
そしてUser must authenticate withでAny 2 factor typesを選択します。

次に既存のRuleを修正します。
こちらのRule nameはLegacy Authとしました。
Client isの内容をExchange Active Syng/Legacy Authだけにします。

その後、Ruleの順番を整理します。
- Legacy Auth
- Not Legacy Auth
↑のようにし、Legacy Authならパスワード認証だけ、そうじゃないならMFAを必要とする。という導線にしています。
これで設定は完了です。
あとはPINの設定でOktaの認証が通ればOKです。
最後に
OktaとAzure ADとのフェデレーションはハマりどころがそこそこありますが、構成するとWindowsのセットアップにOktaのアカウントを使えたりとセキュリティの向上が望まれます。
ぜひ皆さんも設定されてみてはいかがでしょうか?
Discussion