ADFS+Office365でブラウザーアクセスのみ多要素認証を設定

前回、Windows Server 2012 R2のADFSを利用することで、ユーザー名/パスワードに加えて、証明書を認証要素に加える、多要素認証を設定できることを解説しました。
ところが、この多要素認証、本稿執筆時点ではブラウザーからのみ利用可能で、OutlookやLyncからOffice365にアクセスするようなケースでは利用できません。

そこで、ブラウザーからADFSを利用したときだけ、多要素認証を利用できるように設定してみたいと思います。

多要素認証のための認証ルール

ADFS管理ツールの[ADFS]-[認証ポリシー]から多要素認証の編集画面を開くと、以下の画面が表示されます。多要素認証の設定画面では、証明書を利用した多要素認証を行う設定のほか、多要素認証を行うユーザー/グループ、デバイス種類などの設定があります。

image

こうした条件はGet-AdfsAdditionalAuthenticationRule PowerShellコマンドレットに格納されています。

実際にコマンドレットを実行してみると、ご覧のように要求規則言語が登録されています。

image

つまり、多要素認証の画面で設定した、多要素認証を利用するための条件は要求規則言語となって、ADFSの中に登録されているということになります。

このことは、言い方を変えると、自分で要求規則言語を書けば、好きな条件を設定できるということになります。

そこで、シナリオをひとつ考えてみましょう。

Office365のアクセス時に多要素認証の利用を切り替える

冒頭にも紹介しましたが、Office365でADFSを使ってシングルサインオンを行う場合、証明書認証による多要素認証を使ってしまうと、多要素認証が利用できないOutlookやLyncからのアクセスができなくなります。

そこで、今回のシナリオでは

ブラウザーからOffice365にアクセスしたときだけ多要素認証を利用する

を設定します。Let’s go!

■確認その1-○○の条件のときだけ多要素認証を利用する設定

これは決まり事です。覚えましょう。

=> issue(Type = “http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod”, Value = “http://schemas.microsoft.com/claims/multipleauthn”);

■確認その2-「Office365でブラウザーからアクセスする場合」という条件設定

ADFSの要求記述のうち、エンドポイントのパスという要求記述を使えば、ADFSのどのようなURLにアクセスしたかを条件にできます。ブラウザーからOffice365にアクセスする場合、以下のURL(パス)を使います。

社内ネットワークからブラウザーを使ってアクセス:/adfs/ls/wia

インターネットからブラウザーを使ってアクセス:/adfs/ls/

ここでは、話を簡単にするために社内ネットワークからブラウザーを使ってアクセスすることを前提とします。その場合、次のような要求記述を書きます。

exists([Type == “http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path”, Value == “/adfs/ls/wia”])

■確認その3-多要素認証を設定するコマンドレットはなに?

もう想像のついている人もいるでしょう。設定を見るコマンドレットが

Get-AdfsAdditionalAuthenticationRule

ですから、設定するコマンドレットは

Set-AdfsAdditionalAuthenticationRule

になります。

■Bring it together!-すべてを組み合わせて設定します

確認その1ヵらその3までの内容を組み合わせるとこうなります。

Set-ADFSAdditionalAuthenticationRule –AdditionalAuthenticationRule ‘exists([Type == “http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path”, Value == “/adfs/ls/wia”]) => issue(Type = “http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod”, Value = “http://schemas.microsoft.com/claims/multipleauthn”);’

image

できあがりです。

ちなみに、PowerShellから多要素認証の設定を行うと、GUIからは設定変更ができなくなります。

image

要求規則言語の書き方を学習したい、要素認証の設定について学習したい、という方には
ADFSトレーニングにて、様々な実機での検証環境と共に学習できる場を用意しておりますので、ぜひご参加いただければと思います。

・参考
クライアントの場所に基づいた Office 365 サービスに対するアクセスの制限http://community.office365.com/ja-jp/wikis/sso/927.aspx