2重に多要素認証が実行されるのを回避する方法

皆さんこんにちは。国井です。

ユーザー名/パスワードとは別に、電話やモバイルアプリなどを使って認証を行う多要素認証。
多要素認証にはユーザー名/パスワードが悪用された時の備えとして役立つとされていますが、ユーザーさんには「面倒」と煙たがられます。

特にADFSを使って、Office 365 (Azure AD)にシングルサインオンしている環境だと、ADFSの多要素認証と、Azure ADの多要素認証があって、両方設定してしまった日には、設定した瞬間から苦情が殺到します。
そこで、今日はADFSで多要素認証を設定した場合には、Azure ADで多要素認証を設定しても、回避される方法を紹介します。

あ

■ ■ ■

まず、手始めにADFSサーバーで証明書認証を有効にします。
ADFSサーバーでの証明書認証の設定方法そのものはこちらで紹介しているので、参考にしてください。

image

次に、Azure ADでも多要素認証を有効にします。
Azure ADの多要素認証設定はOffice 365の管理ポータル、またはMicrosoft Azureのポータルから設定できます。

image

設定したら、早速Office 365にシングルサインオンしてみます。
すると、一瞬だけADFSの多要素認証画面が表示され(証明書認証なので、自動的に認証は完了する)、その後、下の画面のように、Azure ADで多要素認証を初めて実行するときの画面が表示されます。
つまり、ADFSとAzure ADの両方で多要素認証が実行されてしまっていることがわかります。

image

ここからがポイントですが、

ADFSサーバーで認証されたユーザーがAzure ADの多要素認証を実行しないようにするには、
ADFSサーバーでクレームルールを設定します。

ADFS管理ツールの[証明書利用者信頼]から[Microsoft Office 365 Identity Platform]を右クリックし、[要求規則の編集]をクリックして、[発行変換規則]タブから規則を追加し、[カスタム規則を使用して要求を送信]をクリックして、以下のルールを作成します。
(1行で書いてください)

=>issue(Type=”http://schemas.microsoft.com/claims/authnmethodsrefe
rences”,Value=”http://schemas.microsoft.com/claims/multipleau
thn”);

下の画面のように設定できたら、[完了]をクリックして、保存しておきましょう。

image

これで再チャレンジします。すると、Azure ADの多要素認証画面が表示されることなく、Office 365にサインインできたことになります。
しかし、ここで大きな問題が。
このクレームルール、ADFSサーバーで多要素認証を行っているか、いないかに関わりなく、Azure ADの多要素認証を回避してしまいます。
せめて、ADFSサーバーの多要素認証だけ実行させたい、という場合はクレームルールに「ADFSサーバーで多要素認証を実行した場合」という条件を書きましょう。

どうやって書くか?
色々やり方はあると思いますが、私が着目したのは証明書を利用して多要素認証を実行した場合、http://schemas.microsoft.com/2012/12/certificatecontext/ekuクレームに値を設定する点です。

image

つまり、ekuクレームがトークンに含まれる場合はAzure ADの多要素認証を回避せよ!というクレームルールを書けばよいので、

Exists([Type==“http://schemas.microsoft.com/2012/12/certificatecont
ext/eku”])
=>issue(Type=”http://schemas.microsoft.com/claims/authnmethodsrefe
rences”,Value=”http://schemas.microsoft.com/claims/multipleau
thn”);

と書けばよいのです。(1行で書いてください)
image

このクレームルールを保存して、もう一度、Office 365へのシングルサインオンを試してみると、ADFSサーバーで多要素認証を実行したPCだけがAzure ADの多要素認証を回避して、シングルサインオンに成功します。

【参考情報】
Securing cloud resources with Azure Multi-Factor Authentication and AD FS
https://github.com/Azure/azure-content/blob/master/articles/multi-factor-authentication/multi-factor-authentication-get-started-adfs-cloud.md

Azure MFAをADFSサーバーで利用する方法
https://azure.microsoft.com/ja-jp/documentation/articles/active-directory-conditional-access-azuread-connected-apps/