2011年3月16日水曜日

プロトコルとトークン形式

先週金曜日(3/11)にMS安納さんと「AppFabric ACS V2 で構築するSSO」セミナをやったのですが、その時にお話しした内容を少々。
(事情があり資料は公開しません)

私のセッションでは
・アイデンティティにまつわる言葉の定義
・プロトコルとフォーマット(トークン形式)
・各種情報へのポインタ
についてお話をしました。

その中で一番混乱しやすい「プロトコルとフォーマット」の話を軽く触れておきたいと思います。(現にMSDNフォーラムや先日のMVP Global Summitでもみなさんが一番わかりにくい、と話をしていましたし)
また、セッション内で本当は見せようと思っていたデモを公開します。

セッション内では以下の様に説明をしました。


プロトコルアイデンティティ情報を受け渡す方法
トークンアイデンティティ情報を表現する方法



例えば
・プロトコル
 ws-federation、SAMLなど
・トークン
 SAML、SWT、JWTなど
です。

実は上記の例の中のSAMLがこのプロトコルとトークンを混乱させる一番の原因になっているのでは?と思っています。SAMLはプロトコルであり、トークン形式でもあるためです。
例えばws-federationプロトコルはSAMLトークンを使うことも可能ですし、もちろんSAMLプロトコルはSAMLトークンを利用します。
※そういう意味でプロトコルのSAMLをトークンのSAMLと区別するためにSAMLPと呼んだりします。


では、それぞれの例を見ていきます。

まずはプロトコルですが、以下がSAMLプロトコルの流れの例です。(SAMLのやり取りはプロファイルという形で他にもやり取りの方法が規定されています。またこのやり取りはws-federationでも同じ流れです)










実際には各フローのそれぞれのメッセージの形式がプロトコルとして規定されています。


次にトークンです。こちらもSAMLトークンの例を示します。

















こんな感じで発行元、署名、属性情報がXML形式で入っています。



Azure上にACSv2と連携する簡単なデモを作成しているのでこちらを触ってもらえば実際の動きと発行されたトークンを見ることができます。

1.以下のURLにアクセス
  http://stvc-demo.cloudapp.net/default.aspx

2.ACSv2のサインイン画面にたどり着くので好きな認証元(IdP)をクリック




















3.例えばFacebookをクリックするとFacebookの認証画面へリダイレクトされるのでログイン
















4.無事にログインするとアプリケーションに戻り、ポストされたトークンが表示される(以前紹介したSecurity Token Visualizer Controlを利用)

















#Azureの特別導入プランのXSインスタンスを使っているのでしばらくは公開しておきますが、ACS側の仕様の変更などもあると思いますのでそのうち消します。。。

0 件のコメント: