2011年7月27日水曜日

ACSのクレームルール拡張

前回のエントリにも書いた通り、July 2011 リリースで ACS のクレームマッピングが拡張されています。

具体的には Identity Provider(IdP) から ACS に渡ってくるトークンを変換する際に、2つのクレームの値を条件として出力ルールを記載することが可能になりました。

といっても、何のことかよくわからないと思いますので ACS がトークンをどのように扱うのか?についておさらいしておきます。

ACS の基本的な機能として、IdP が発行したトークンを Relying Party(RP) が理解できる形へ変換する、いわゆる Federation Provider 機能があります。














このトークン変換を行う際に利用されるのが規則グループです。
ACS は IdP からトークンが渡ってくるとトークンからクレームを取り出し、規則グループの条件に従って、RPへ出力するトークンへクレームを再構成します。

条件としては、入力側のクレームについて
・発行元
・タイプ
・値
を指定することになります。
この条件に合致した時に出力側のクレームのタイプと値を決める、という形の処理を行います。

例えば、「Googleが発行したクレームでemailaddressの値がxxxx@gmail.com」なら「roleの値にadminをセットしたトークンを発行する」といったことが出来ます。


今回の ACS の拡張に話を戻すと、この入力側の条件が2つ設定できるようになったというのが拡張の内容です。

つまり、「Googleが発行したクレームでemailaddressの値がxxx@gmail.com、且つnameの値がNaohiro Fujieだったら」という様な条件を記載することが出来るようになっています。(ちなみに2つの条件として設定できるクレームの発行元は同一もしくは片方は ACS が他のルールで出力した結果である必要があります)


実際にやってみます。
設定した条件は、
・条件1
 ・トークン発行元:Google
 ・タイプ:emailaddress
 ・値:xxxx@gmail.com
・条件2
 ・トークン発行元:Google
 ・タイプ:name
 ・値:Naohiro Fujie
に合致したら、
・タイプ:role
・値:管理者
を出力するという設定にします。


まずは規則グループの設定です。
■条件1の設定
















■条件2の設定














■結果の設定












実際に出力されたトークンを Security Token Visualizer で見てみると、条件に合致した結果、role に「管理者」という値がセットされていることがわかります。







これを組み合わせるとかなり複雑なトークン変換を行うことが出来るようになり、例えば RP 側でのアクセス制御をより詳細に設定するようなことも出来る様になるはずです。

0 件のコメント: