“Zermatt” – クレーム (Claim) 対応アプリケーションのためのフレームワーク
ユーザー認証・承認(認可)のプログラミングモデルである、「クレーム (Claim)」を利用した Web アプリケーション、Web サービス (WCF) を作りやすくするためのフレームワーク “Zermatt” (コードネーム) のベータ版が公開されました。クレームは ID とともに提示されるユーザーの属性情報のことを言います。
Microsoft Code Name “Zermatt” (英語)
https://connect.microsoft.com/site/sitehome.aspx?SiteID=642
上記 connect サイトから、サンプルプログラムを含む ”Zermatt” ベータ版と、ホワイトペーパーがダウンロードできます。
現在、Web アプリケーションや Web サービス (WCF) (以下アプリケーション) における承認は、ロール (役割) ベースの実装が多いかと思います。また認証もアプリケーション内で実装することが多いのではないでしょうか。クレームベースのモデルでは、インフラによるシングルサインオンを活用し、よりアプリケーションごとの独自の実装を減らそうという目標があります。
具体的には、認証についてはインフラにアウトソースし、認証済みのユーザーが、必要な属性情報をアプリケーションに伝えるという仕組みです。属性情報はセキュリティトークンにカプセル化され、HTTP の POST データや Cookie などで運ばれます。アプリケーション側では、デジタル署名済みの正当なトークンであれば、認証済みのユーザーとして扱い、属性情報=クレームを取り出して、属性に応じて承認すればよいことになります。この仕組みにより、アプリケーション側では認証やユーザーの追加削除などの管理は一切不要になります。また属性もユーザー側から提供されますので、アプリケーションからディレクトリに問い合わせたりする必要もなくなります。さらに、組織の変更や役職の異動などにも自動的に対応できることになります。つまり、アプリケーションで関心があるのは、承認のためのユーザーの属性であり、その情報の取り扱いだけに専念できるのがクレームベースの利点です。
“Zermatt” は .NET Framework 3.5 に対する追加クラスになっており、IIdentity や IPrincipal の実装として IClaimIdentity, IClaimPrincipal を追加するなど、既存のモデルを活かしながら拡張しています。ホワイトペーパーにサンプルコードがありますので、雰囲気を知るためにも、まずはホワイトペーパーをご参照ください。また、”Zermatt” をインストールすると、サンプルコードも多数入っていますので併せてご参照ください。