2011年2月20日日曜日

クレームの発行状態を確認する

AD FS2.0やAppFabric ACSを使った外部認証を有効にしたアプリケーションを開発しているとちゃんとセキュリティトークンが発行されているのか、トークンの中のクレームに何が入っているのかの確認をしたくなります。
もちろんfiddlerを使って実際のHTTPのやり取りの中からPOSTされるSAMLトークンをキャプチャしてSAML 2.0 Debuggerでデコードする、というのもやり方としてはありなのですが、いかんせん生のXMLを見ていく必要がありますし何より手順として少々面倒です。

ということで、私が使っているのがSecurity Token Visualizer Control(STVC)です。PDC等のカンファレンスでVittorioさんが使っているのを見たことがある方もいらっしゃると思いますが、彼がcodeplexに公開しているSAML2.0のトークンを解析して表示してくれるコントロールです。

公開URL:
http://archive.msdn.microsoft.com/TokenVisualizerCtrl

最新版:
SecurityTokenVisualizerControl PDC09 WIF RTM


■環境の構築
※WIF SDKやVisual Studio、IISのアプリケーションプールの設定が正しくされている前提です。

・アーカイブを展開する
では、さっそく使ってみましょう。上記URLからダウンロードしたファイルを実行するとアーカイブの展開および環境のチェック、デプロイが行われるのですが最新版がPDC09とあるように少々古い環境なので最近の環境ではそのままでは使えず、セットアップ過程におけるDependency Checkerでこけてしまいます。これは前提となる環境がVisual Studio 2008だったりするせいなので、アーカイブの展開が終わったらさっさとキャンセルボタンを押してセットアップは省略してしまいましょう。
すると、展開先のフォルダ以下にアーカイブが展開され、「code\Microsoft.Samples.DPE.Identity.Controls\bin\Debug」以下にSecurityTokenVisualizerControl.dllが出来ています。
もちろん同梱されているプロジェクトをVisual Studio 2010でビルドしなおしてdllを再作成してもOKですが、面倒なのでこのdllをそのまま使ってしまいます。

・作成するプロジェクト内でSTVCを利用する
この辺りはVisual Studioを使い慣れている方には当たり前なのでしょうが、上記で解凍したコントロール(dll)をプロジェクトで使えるようにするためにコントロールを参照する必要があります。

ツールボックスを表示して、コントロールの参照から解凍したdllを参照します。
すると、ツールボックス内にSTVCのアイコンが出てきますので、プロジェクトのWebページ上にドラッグ&ドロップします。これでコントロールの配置は完了です。




















・Federation Utilityを実行しSTSへの参照設定を行う
ここはAD FS2.0やACSを使った外部認証を有効にする手順と同じですが、Federation Utilityを使ってSTS参照を有効にします。今回はACSを参照することにします。
※もちろんACS側へのRelying Partyの設定も必要です。














・ちょこっとweb.configを修正する
実はFederation Utilityを実行してもweb.configに手動で設定を行う必要があります。(.NET Framework 4.0を使う場合のみ?)結構はまりポイントなので、うまく動かない場合は一度このあたりの設定を疑ってみる必要があるかもしれません。

<system.web>以下
 <httpRuntime requestValidationMode ="2.0"/>

<microsoft.identityModel>以下
 <service saveBootstrapTokens="true">


これで準備は完了です。

■使ってみる
では、作成したプロジェクトを発行してWebページにアクセスしてみます。

まずはACSで認証されます。




















うまくトークンとクレームが発行されていれば、Webページのコントロールをクリックして展開されるテーブルにトークンの情報が表示されるはずです。













上の方に発行されたクレームの型と値、発行元の情報が、下の方に実際に発行されたSAMLトークンの情報が表示されているのがわかります。


アプリケーションのデバッグはもちろん、AD FS2.0やACSなどの基盤が正しく動作していることの確認を行うためにも使えそうです。(もちろんデモ用途にも)

0 件のコメント: