ADFSクレームルールの学習リソース ~ サンプルアプリケーションの実装

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

今日は2016年4月に開催されたOffice365認証ベストプラクティスコースのフォローアップの内容です。
コースの中で、ADFSで使われるクレームルールについて詳しく知りたいというご意見をいただきました。ADFSサーバーを利用して、Office365のシングルサインオン環境を構築しても、トークンの中に含まれるクレームの中身が見えるわけではありません。

そのため、もしクレームの中身を見たいということであれば、私がいつもお勧めしているのは
Windows Identity Foundation SDK 3.5の中に含まれているサンプルアプリケーションを利用することです。

実装方法は、、と説明しようと思ったら、マイクロソフトさんのWebサイトで紹介していたので、ご覧いただくことをお勧めします。

Windows Server 2012 R2 の AD FS 用のラボ環境をセットアップする
https://technet.microsoft.com/ja-jp/library/dn280939.aspx

既にOffice365のシングルサインオン環境が構築されているのであれば、
上記Webサイトの「手順 3:Web サーバー (WebServ1) とサンプルの要求ベースのアプリケーションを構成する」の部分をご覧いただき、手順に沿って進めていただければサンプルアプリケーションを実装できます。
ここでは、Webサイトで紹介している手順のうち、ポイントとなるところをいくつか紹介しておきます。

ポイント1:ADFSサーバーにサンプルアプリケーションをインストールしない

現行のバージョンのADFSはIISを使いません。そのため、ADFSサーバーにIISをインストールし、SSLサイトを構築すると、443番ポートがADFSとIISの2つのアプリケーションから利用することになってしまい、正しく動作しない可能性があります。そのため、ADFSサーバーではないサーバーを別途用意していただくのが賢明でしょう。(ちなみに私の環境はテスト環境なので、ドメインコントローラーにIISをインストールして動作させました)

ポイント2:ユーザープロファイルの読み込みを有効にしておく

IISの設定で、アプリケーションプールの詳細設定を開き、[ユーザープロファイルの読み込み]をTrueにしておきます。私の環境では、この設定を行わない場合、うまく動作しませんでした。

image

ポイント3:URLの指定は正確に

フェデレーションユーティリティを実行するとき、証明書利用者信頼を設定するとき、それぞれで指定するURLを厳密に見ています。例えば、https://test/claimapphttps://test/claimapp/は別々のURLとして認識しますので、注意深く設定してください。

image

image

以上のポイントを踏まえて、サンプルアプリケーションを実装すれば、ADFSサーバーから発行されたトークン内のクレームがサンプルアプリケーションを通じて確認できるようになります。

こちらは証明書利用者信頼で、クレームを何も設定しなかった場合

image

こちらは証明書利用者信頼のクレームルールで、Active DirectoryのUPN属性をmailaddressクレームとして設定した場合

image

ご覧のようにmailaddressクレームにUPNの値「administrator@example.com」と入っていることが分かりますね。

image

このように、サンプルアプリケーションをADFSサーバーに実装しておけば、クレームルールを設定した時に、どのような結果が得られるのか視覚化できるので、おすすめです。

最後にポイントをもう一つだけ。
トークンは一度取得すると、ブラウザーを終了しない限り、同じトークンを使い続けます。
そのため、証明書利用者信頼でクレームルールの設定を変更したときは、必ずブラウザーを再起動して結果を確認してください。

■追記
Azure ADから発行されたトークンに含まれるクレームの中身を見たい場合は
ブチザッキさんの「Azure Websites の認証/承認機能」や
私の過去の投稿「Azure ADアカウントを利用したADFSのクレームベース認可」を参考にしていただくとよいと思います。

■5月27日追記
Webページがエラーになる場合、IISの設定で、アプリケーションプールの詳細設定を開き、[ID] で指定するアカウントを ApplicationPoolIdentity からNetworkServiceに変更すると動作します。