ADFSによる多要素認証の設定

Windows Server 2012 R2のADFSより多要素認証が新しくサポートされ、ユーザー名/パスワード以外の要素を提示するように構成することができるようになっています。多要素認証を利用すれば、よりセキュアな認証を実現できるというメリットがあります。

図にすると、こういうことになります。
今まで、ADFSを利用してクレームベース認証を行おうと思ったら、
ユーザー名/パスワードを入力していました。

image

ただし、ユーザー名/パスワードは盗まれやすく、悪用されやすいので、
追加の条件として、証明書を持っているか?ということを設定できるようになりました。

image

これにより、ユーザー名/パスワードと証明書の2つの要素を利用した認証=多要素認証が実現できるわけです。

現在のところ、多要素認証には証明書を利用した認証だけがデフォルトで用意されています。
もし、ワンタイムパスワードなど、証明書以外の要素を多要素認証に含めたい場合にはVisual Studioで作りこみをしなければなりません。

また、証明書認証は[信頼されたルート証明機関]から発行された証明書(ユーザー証明書)であれば、どんな証明書でもよく、ベリサインで発行された証明書はもちろん、Active Directory証明書サービスを使って自前で用意したCAから発行された証明書でもOKなのです。
(本音を言えば、特定のCAから発行された証明書だけをOKとする、のような設定が欲しいですね)

では、設定方法を確認してみましょう。

証明書サービスのインストール

Active Directory証明書サービスのインストール方法は以前にも当ブログで紹介しているので、そちらを参考にしてください。インストールするときは「証明機関Web登録」を役割サービスで追加しておくと便利です。

インストールが完了したら、Active Directory証明書サービスの構成を行います。こちらも以前の投稿をご覧いただくことにして、ポイントだけお伝えしておくと、前の手順で追加した証明機関Web登録をここでも選択しておくことです。なお、今回のケースではエンタープライズCAで証明書サービスを実装することを前提にします。

ADFS-CA001

ウィザードが完了したら、証明書サービスのインストールは完了です。
続いて、証明機関Web登録サイトをSSLサイトにするための構成を行います。

IIS管理ツールを開いて、[サーバー証明書]から[ドメイン証明書の作成]から証明書を作成します。

image

作成するときのポイントは、一般名の欄がURL内のFQDNと同じ名前になるようにしておくことです。

image

出来上がると、サーバー証明書の一覧から確認できます。

image

では、作成したサーバー証明書をWebサイトに関連付けします。
サイト-Default Web Siteを右クリックし、[バインドの編集]をクリックします。

image

サイトバインドで[追加]をクリックして、SSLの証明書を含むHTTPSサイトを作成します。

image

ADFS-CA008

ここまでで証明書サービス側の設定は完了です。

クライアントコンピューターへのユーザー証明書のインストール

ADFSを経由して、多要素認証を利用して、各種サービスにアクセスするユーザーの場合、
事前に証明書をインストールしておかなければなりません。証明書は次の方法でインストールすることができます。

ブラウザーから、https://<証明書サービスをインストールしたサーバーのFQDN>/certsrv/と入力してアクセスします。このとき、証明書のエラーが表示される場合は、おそらくルート証明書をまだ認識していないと思いますので、gpupdate /forceで取得しておきましょう。

サイトから[証明書を要求する]をクリックして開始します。

image

ユーザー証明書をクリックします。

image

送信をクリックすれば、証明書作成の命令がサーバーに送信されます。

image

ダイアログが表示されたら、はいをクリックして、
この証明書のインストールをクリックして、証明書をクライアントにインストールします。

image

ここまでで自分のコンピューターにユーザー用の証明書がインストールされたことになります。

image

多要素認証の設定

続いてADFSサーバーで多要素認証の設定を行います。
ADFS管理コンソールから[認証ポリシー]の多要素認証から編集をクリックします。

image

編集画面では、[証明書認証]の欄にチェックをつけることと、
その他、多要素認証を利用するための条件を設定できます。画面の設定では、

・多要素認証を利用するユーザー/グループ
・多要素認証を利用するデバイス
(デバイス登録サービスで登録されたデバイスを多要素認証の対象とするか?)
・多要素認証を利用する場所
(エクストラネットとはWebアプリケーションプロキシを経由する場合、という意味です)

以上の設定を行うことが可能です。

image

ちなみに、証明書利用者信頼ごとに多要素認証を利用するための条件を設定することも可能です。

image

FS-MFA004

証明書による多要素認証を利用

ここまでで出来上がりです。
ユーザー証明書をインストールしたコンピューターから
Office365のポータルサイトにアクセスしてみましょう。
(Office365のシングルサインオンの設定は既に行っている前提です)
https://portal.microsoftonline.comからユーザー名を入力すると、
自動的にページがリダイレクトされ、証明書の選択画面に移動します。

image

image

証明書の選択画面も、自動的にコンピューターにインストールされているユーザー証明書をピックアップするので、ユーザーが行う操作は何もありません。(ちなみに証明書がインストールされていないと、このあとエラー画面が表示されて終了します)

証明書による追加の認証が完了すると、Office365のポータルサイトにアクセスできるようになることが確認できます。

image

2016年4月17日追記
Internet Explorerで、証明書の選択画面からOffice 365の画面に推移するためには
IEの[ローカルイントラネットゾーン]設定で、[現在のユーザー名とパスワードで自動的にログオンする]が選択されている必要があります。
MFA160417

多要素認証というと、ユーザーに面倒な手間を強いることになるケースが多いですが、
証明書を利用する方法は(デバイスは限定されるものの)、ユーザーが多要素認証を使っている
ということを意識させることがないくらい、非常にスマートに処理をしてくれます。

また、証明書をインストールする手間が面倒だという方はグループポリシーから証明書を配布する方法もありますので、そちらと組み合わせて実装すると良いですね。