【IDM】AD FS 2.0 カスタムルール(カスタム規則)の作り方 1/2

9/11 は MVP 瀬尾さん主催の「技術ひろば」で AD FS 2.0 のお話をさせていただきました。本日の資料を以下にアップロードしましたので参考になさってください。ちなみに10月の勉強会は エバンジェリスト松崎による SharePoint 開発 らしいです。お好きな方にはたまらないかと。   さて、私のセッションの中で カスタムルール を使用したデモンストレーションを行いましたが、その作成手順を説明できなかったのでこちらにまとめておきます。カスタムルールについては以下も参考にしてください。 【IDM】AD FS 2.0 で属性ストアとしてSQL Server を使用する ■想定するシナリオ Active Directory にログオンした回数 (LogonCount) によって利用者の利用状況を判断し、WEB アプリケーションに表示するメニューを変えたい。例えば、100 回以上ログオンしたことがあるユーザーは「操作に慣れたユーザー」であると判断して、使えるアプリケーションを増やしてあげるとか…。(適当なシナリオですんません) ■作業概要と若干の事前解説 AD FS 2.0 ではクレームを作成しやすくするため、以下に示すような「要求規則テンプレート」というものが用意されています。 このテンプレートで吸収できない規則(ルール)を使用したい場合には、「カスタムルール」を作成しなければなりません。 カスタムルールの書式は一見シンプルなのですが、実は意外と奥が深かったりします。書式に関する情報や事例が、現時点ではあまり多くなく、ちょいと苦労するかもしれません。 カスタムルールを作成するのにうってつけの参考書は、既存の要求規則テンプレートでしょう。例えば、「入力方向の要求をパススルーまたはフィルター処理」という要求規則テンプレートを使用して、 『役割』というクレームに『Manager』が入っている場合のみクレームをスルーする という規則を作ってみると、以下のようになります。 ここで、画面の下部にある「規則言語の表示」をクリックしてください。画面の設定内容が「要求規則言語」で表示されます。 言語部分は、以下のように書かれています。 c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/role", Value =~ "^(?i)Manager$"] => issue(claim = c); 要求規則言語は大きく2つの部分に分かれます。1つが条件部で、もう1つが発行部です。両者は「=>」で結ばれ、条件部が True の場合にのみ処理が発行部に渡されてクレームが発行されます。…