#はじめに
ADFSをIDプロバイダとして利用し、各種アプリケーションへのSSOを実現している環境において、以下のツールを用いて、ADFSが発行するトークンの中身を確認する方法について紹介します。ここでは、ADFSの構築経験または運用経験がある方を対象としております。本投稿で利用するツールは以下となります。
ツール名 | 概要 |
---|---|
Claims X-Ray | MSが提供するADFSのトラブルシューティングツール。ADFSが発行したトークンの中身に記載のクレームを確認することが可能 |
Fiddler | 言わずと知れたフリーのWebデバッグツール。ここでは、ADFSが発行するトークンの中身を確認することを目的とする。 |
#Claims X-Rayの設定
1.以下のサイトにアクセス。
https://adfshelp.microsoft.com/ClaimsXray/TokenRequest
2.下図の「relying Party Trust Management」をクリック。
3.下図の、「Download」をクリックし、スクリプト(ClaimsXrayManager.ps1)をダウンロードする。
4.ダウンロードしたスクリプトをADFSのプライマリーノードにコピーする。
5.実行をすると、以下のような画面となる。Select Relying Partyで既存の証明書利用者信頼から一つを選択し、「Apply Changes」をクリックすると、Claims X-Rayという名前の証明書利用者信頼が追加され、そこに、上記で選択した証明書利用者信頼の発行規則がコピーされる。デフォルトは、「Default: issue all claims」となっとおり、既定で用意されている以下の発行変換規則が適用される。ここでは、デフォルトを利用して検証。
x:[]=> issue(claim = x);
6.ADFSの管理から証明書利用者信頼を確認すると、下図の通り、ClaimXrayが追加されたことが確認できます。
これで設定は完了となりますので、次は、実際にClaims X-Rayを使って、ADFSが発行したトークンのクレーム(要求)を確認してみます。
#クレーム(要求)を確認してみる
1.以下のサイトに戻ります。
https://adfshelp.microsoft.com/ClaimsXray/TokenRequest
2.「Federation instance」にフェデレーションサービス名を入力。ここでは、「Authentication type」でFormsを選択し、「Token request」でWS-FED(SAML 1.1)を選択する。「Force fresh authenication」にチェックをいれ、「Test Authentication」をクリック。
3.ADFSの認証画面が表示されますので、AD上に存在するユーザーでサインインをします。
4.サインインをすると、以下のような画面となり、ADFSが発行したトークンのクレームを確認することができます。
カスタムのクレーム規則を作成した際などに、クレーム(要求)が正しく送られているかを確認することが可能となるため、トラブルシューティングなどの際に活用すると便利かと思います。次は、Fiddlerを利用して、ADFSが発行する生のトークンを見ていきます。
なお、Claims X-ray自体を利用しても、生のトークンを確認することが可能です。
#Fiddlerの設定
1.以下のサイトからFiddlerをダウンロードします。
https://www.telerik.com/fiddler
※ここでは、Fiddler Classicを利用します。
2.ADFSの証明書利用者信頼(Relying Party)に登録したアプリケーション(ここでは、上記で設定したClaims C-Rayを用います。)にアクセスするPCに、Fiddlerをインストールします。
3.Fiddlerのインストールが完了したら、起動をし、https通信を復号化するための設定をします。
・まずは、「Tools」→「Options」をクリックします。
・「Decrypt HTTPS traffic」と「Ignore server certificates errors(unsafe)」
にチェックを入れ、「OK」をクリックします。
これで、設定は完了となりますので、実際に先ほどのClaims X-rayを利用して、ADFSが発行するトークンの中身を確認していきます。
#Fiddlerでトークンの中身を確認する。
1.Fiddlerを実行した状態で、先ほどのclaims X-Rayを利用して、認証をします。
※設定値は上記と同じものを用います。
2.認証が成功すると、ADFSがトークンを発行しますので、それをFiddlerで、下図の通り、キャプチャできていることを確認します。
3.メモ帳にコピーすると以下のような感じです。。
4.先ほど、Claims X-Rayで確認したクレームの情報などを確認することができます。
例えば、"windowsaccountname"というクレームだと、以下の通りに情報が格納されています。
<saml:Attribute AttributeName="windowsaccountname" AttributeNamespace="http://schemas.microsoft.com/ws/2008/06/identity/claims"><saml:AttributeValue>FOO\testuser</saml:AttributeValue>
また、電子署名についても記載されており、その部分を切り取り、.cer拡張子で保存をすると、ADFSのトークン署名証明書と拇印が一致していることも確認できます。
#備考
今回は、ID連携プロトコルとして、WS-Federationを用いましたが、SAMLを選択した場合でも同様に確認することが可能です。また、本検証では、認証方式としてForms認証を用いましたが、選択した認証方式によって、リクエストヘッダーの値は以下の通りとなります。
認証方式 | WS-Federation | SAML |
---|---|---|
Forms | wauth=urn:oasis:names:tc :SAML:1.0:a m:password |
RequestAuthenticationContext=urn:oasis:names:tc :SAML:2.0ac:classes:Password |
Windows Integrated Authentication | wauth=urn:federation:authentication:windows | RequestedAuthenticationContext=urn:oasis:names:tc :SAML:2.0:ac :classes:Kerberos |
Certificate | wauth=urn:ietf:rfc:2246 | RequestedAuthenticationContext=urn:oasis:names:tc :SAML:2.0:ac :classes:X509 |
Multifactor Authentication | wauth=http://schemas.microsoft.com/claims/multipleauthn | RequestedAuthenticationContext=http://schemas.microsoft.com/claims/multipleauthn |