2010年8月30日月曜日

[Silverlight+WIF+ADFS2.0] TechEd Japan 2010 BoF-09の資料公開など

先週8/25-27でTechEd Japan 2010に参加してきました。
今回は単なる聴講だけではなく、BoF (Birds of Feather) とLT (Lightning Talk) にも軽く参加させてもらいました。

LTはいずれマイクロソフトのサイトで資料公開されると思いますが、BoFについては資料は公開されないそうなので、こちらで公開しておきます。Silverlight Squareの@hr_saoさんとのコラボです。



内容を簡単に紹介しておくと、SilverlightアプリケーションからWIFを使って外部システム(ADFS2.0等)で認証を行うには、という話です。

利用シーンとして企業間のアプリケーション共有を想定しており、

・アプリケーションオーナーとなる企業から利用者となる企業のID管理をしたくない
 (これまではアプリケーションオーナーが全利用者のIDを管理していたが、本当は他の企業のユーザの管理はしたくない・・・)
 →WIF+ADFS、ADFSのIdP連携

・利用者はブラウザ特有のオペレーションではなく、もっとリッチなインターフェイスでアプリケーションを使いたい
 →Silverlightアプリケーションを使う(デモではインブラウザーを見せましたが、本当はブラウザ外実行をお見せしたかったです。今回は時間切れです。。。)

というシナリオでデモをしました。

詳細はスライドを見ていただければと思いますが、実際に環境を作る際に苦労したのはSilverlightから直接WIFを呼ぶことができないため、WCFのサービスでWIFをラッピングする仕掛けを作って、Silverlightからはそのサービスを呼び出す形にする必要があった点です。

まぁWIFの実装を含め細かい話はこの本にちょっと期待してます。



次にLTですが、資料は公開される見通しですが実はあんまり資料をベースに話をしていないので、ざっくり内容を。
テーマは「Azure上のアプリケーションへのシングルサインオン」ということでWindows Azure上にデプロイしたWIFを使ったアプリケーションとGoogle Apps (GMail)のSSOのデモと、逆にAppFabric Access Control Service (新しい方)を使ってWindows Azure上にデプロイしたWIFアプリケーションからGoogleの認証システムを使う、という2つのデモを紹介しました。
一つ目のデモはできればPCを使わずに、と思っていたのでDell StreakというAndroid OSで動く端末を使いたかったのですが、プロジェクターへの投影の関係で事前に撮影したムービーを紹介しました。

[ムービー]


一応資料も。



こちら(LT)では@tatsuakisakaiさん特別賞?として、「Windows Azureアプリケーション開発入門」をいただきました。



何にせよ非常に充実した3日間でした。
オンラインでは知っている人に初めてオフラインでお会い出来たりしましたし。

あと、BoFのセッションでもお話ししましたが今後はブラウザ外実行しているSilverlightの認証についても試してみたいので、本Blogでも情報のアップデートをしていきたいと思います。

2010年8月18日水曜日

Forefront Identity Manager 2010関連リソース

最近は本業?のForefront Identity Manager 2010よりもAD FS2.0AppFabric ACSなどどちらかというとアイデンティティ情報のライフサイクル管理をする方ではなく、アイデンティティ情報を利用する方ばかりに注力していましたが、たまにはFIMの話題も。。。。

4月に正式リリースされてからもうすぐ半年が経とうとしていますので、そろそろ有用なナレッジも蓄積て来ています。
今日はそれらのナレッジや有用なリソースへのポインタを紹介します。


まずはナレッジではないのですがFIMの提案や設計資料を書くのに有用な素材です。

・FIM ExpertのLiveSpace

 http://cid-b905f742cf6d28e2.office.live.com/documents.aspx
 サーバアイコン集やアーキテクチャ図のPPTXファイルやVISIOのステンシルがあります。












・1dent1ty cHa0s/MVP Brad Turnerさんのblog
 http://www.identitychaos.com/2010/07/fim-2010-standard-objects-visio-stencil.html
 FIM2010の標準オブジェクト(SETやワークフロー部品など)のVISIOステンシルがあります。














次に、母体はTechnetフォーラムですが、たまったナレッジをまとめたものが何点かあります。

・FIM Expert Corner
 http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/2c0d4e9c-aeeb-45e4-8f47-be1f2fab6158

・FIM Knowledge Bit Collection
 http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/3652c6bd-25d8-42da-9bb6-17cf868781cc

・FIM Wiki
 http://social.technet.microsoft.com/wiki/contents/articles/current-forefront-identity-manager-resources.aspx

・Community Knowledge Box(オフラインヘルプ)
 http://code.msdn.microsoft.com/FIMScriptbox/Release/ProjectReleases.aspx?ReleaseId=3045


後は、やはり世界的に見ても結構注目されているらしいFIMの青本です。
以前blogで紹介して以降、海外のFIM関係者の方々から結構な数の問い合わせや彼らのblogでの紹介もされています。(私が執筆に全く絡んでいないので何とも言えませんでしたが・・・)

上記の書籍を紹介したときにMVPのDavid Lundellさんから「実はオレも書いてるんだよ!」という話があったのですが、ようやく日の目を見ることになりそうなので、最後に紹介しておきます。
「FIM Best Practices Volume 1:Introduction, Architecture And Installation Of Forefront Identity Manager 2010」

内容は
 1.What is Identity Management?
 2.Forefront Identity Manager 2010
 3.FIM Architecture
 4.FIM Installation Topologies
 5.Sizing Your FIM Installation
 6.Installing the Prerequisites
 7.Installing FIM
 8.Updating the FIM Components
 9.Post Install Tasks
とかなり実用的に見えます。

しかも、「Volume 1」ということで続編があります。
・Volume 2:
 Using Forefront Identity Manager 2010 to Provision, Deprovision, Synchronize and provide Self-Service
・Volume 3:
 Microsoft Forefront Identity Manager 2010 Operations and DBA Guide
・Volume 4:
 Go Codeless -- Digging Deep with Advanced Features in Microsoft Forefront Identity Manager 2010
・Volume 5:
 Got Code? Customizing Microsoft Forefront Identity Manager 2010 with .NET Code

リリースが楽しみです。というか誰か日本語に翻訳を!と思ってしまいます。

2010年8月17日火曜日

TechEd2010 見どころセッション

いよいよTechEdが来週に迫ってきました。今年はクラウド一色と言っていいほどAzureやOnline Servicesのセッションが目白押しです。

中でもクラウド x アイデンティティ = フェデレーションということでAD FS 2.0関連のセッションは個人的には要注目だと思っています。

■AD FS 2.0関連のテクニカルセッション

8/25 15:20~16:30
T1-304 次期 Microsoft Online Services の ID およびアクセス管理 ~ AD FS 2.0 によるシングル サインオンの実現 1 ~

8/26 16:55~18:05
T3-304 AD FS 2.0 のアーキテクチャと Windows Azure 連携の実装 ~ AD FS 2.0 によるシングル サインオンの実現 2 ~


また、一つだけですがFIM関連のセッションもあります。AD FSなどのIdPの情報鮮度を保つためには重要な機能です。

■FIM関連のテクニカルセッション

8/27 16:55~18:05
T3-302 ポリシー ベースで ID 管理を実現する! ~ Forefront Identity Manager 2010 実践的構築手法 ~



後、僭越ながら私もBoF(Birds of a Feather)とLT(ライトニング・トーク)で登壇させていただきます。いずれもAD FS 2.0とWIF(Windows Identity Foundation)関連ですが、デモも交えていろいろとお見せできれば、と思っています。

■BoF (Birds of a Feather)

8/27 10:55~12:05
BOF-09 Silverlight と WIF (Windows Identity Foundation) のアプリケーション連携

Silverlightアプリケーションの認証を外部AD FS2.0で実施するにあたり WIF をどのように使うか?という点を実際のコードや環境を交えて解説したいと思います。
ポイントは IdP を2つ用意して異なる企業間での認証連携を行うところ、および意外と面倒くさいSilverlightアプリケーションの認証の解説だと思っています。

ちなみにSilverlightSquare@hr_saoさんとのコラボです。

■LT (ライトニング・トーク)

8/27 16:55~18:05
LT-03 Azure 上のアプリケーションとのシングル サインオン!

こちらは本blogでも紹介したネタ(これこれ)をベースにデモを中心に動きを解説したいと思います。
出来ればWindowsクライアントじゃない端末を使ってデモが出来れば、、と色々と画策中です。

2010年8月11日水曜日

新AppFabric ACSでサードパーティIdPと認証連携

現在ラボ公開された新AppFabricのACSがGoogleやFaceBookなどのサードパーティIdPに対応したということで早速試してみました。


その前にAppFabricの新機能ですが、主要な点として
・WIF(Windows Identity Foundation)との統合
・Windows Live ID、Google、Yahoo、FaceBookをIdPとしてサポート
・同じくAD FS2.0をIdPとしてサポート
・OAuth WRAP、WS-Trust、WS-Federationプロトコルのサポート
・SAML1.1、SAML2.0、SWT(Simple Web Token)トークンのサポート
・カスタマイズ可能なホームレルムディスカバリ(どのIdPで認証されるか)の統合
・ACS設定をODataベースで管理可能
・ACS設定を行うWebポータルを用意
というものが挙げられています。



今回上記の中で特にサードパーティのIdPとの連携を試してみたいと思います。

仕組みとしては、下記の図のような形になります。














では、早速試してみます。
まずは、AppFabricのラボポータルへアクセスします。

https://portal.appfabriclabs.com/


まずはLiveIDで認証された後、通常のWindows Azureなどと同じように名前空間の登録やリージョンを設定し、プロジェクトを作成します。













次に、作成したプロジェクトのAccess Control Serviceの設定を行います。
プロジェクト内のAccess Control Serviceを選択すると下記の画面が出てくるので、[Manage]をクリックします。













実はこのACSの管理ポータル自体もACSをIdPとして設定されたアプリケーションなのでサインインするためのIdPの選択画面が出てきます。初めてのアクセスだとWindows Live IDしか設定されていないので、ここはWindows Live IDでサインインします。

すると、Access Control Service自体の設定を行うアプリケーションが出てきます。
ここで以下の項目の設定が可能です。
Trust Relationship
・Identity Providers
 →IdPの設定を行します。
・Relying Party Applications
 →RP(アプリケーション)を設定します。
・Rule Groups
 →Claimのマッピングルールを設定します。

Service Settings
・Certificates and Keys
 →証明書などの設定を行います。
・Service Identities
 →名前空間内のサービスIDなどの設定を行います。

Application Code
・Application Integration
 RPのアプリケーションにACSを統合する際に使用するパラメータ等があります。
















それぞれ順番に設定を行って行きたいと思います。

1.Identity Providers
 Add Identity Providersをクリックすると以下の画面が出てきます。














 今回はAD FS2.0とGoogleを試してみます。

 まず、AD FS2.0ですが[Add]をクリックすると表示名とFederationMetadataを設定する画面が出てきますので、それぞれ設定を行います。
 注意点ですが、現状FederationMetadataを使ってしか設定ができないので、ACSからFederationMetadataが取得できる状態、つまりインターネット上に公開してあるAD FS2.0が必要です。
















 [save]をクリックするとIdentity ProviderとしてAD FSが作成されます。

 続いてGoogleを設定します。こちらは特別な設定項目は存在せず自動的に設定が行われます。(Image URLという項目がありますが、これはログイン画面に特別なイメージを表示したい場合のみ指定します)

 設定が終わるとIdP一覧が以下のようになっているはずです。











2.Relying Party Applications
 次はRPとなるアプリケーションの設定です。Add Relying Party Applicationをクリックし、アプリケーションの設定を行います。

 設定項目は、下記の通りです。
 ・name:表示名
 ・Realm:アプリケーションのURL
 ・Return URL:認証後、トークンをポストするアプリケーションのURL
 ・Token format:トークンのタイプ
 ・Token encryption:トークンの暗号化設定
 ・Token lifetime:トークンの有効期間
 ・Rule groups:Claimマッピングルールのグループ

 今回はローカルIISで動かすASP.NETアプリケーションを考えていますので、
 ・name:test-rp
 ・Realm:http://localhost:20000/
 ・Return URL:http://localhost:20000/
 ・Token format:SAML 2.0
 のみを設定します。
















 [Save]をクリックして設定を保存します。


3.Rule Groups
 次はClaimのマッピングルールの設定です。

 先ほどRPを設定するときにCreate New Rule Groupがデフォルトで指定されているので先ほどのRP用のRule Groupが「Default Rule Group for test-rp」という形で自動的に作成されています。

 そのグループを開き、[Generate Default Rules]というボタンをクリックすると現在設定されているIdPに関して自動的にパススルーするルールが作成されます。















 最後に忘れずに[Save]をクリックすればRule Groupの設定は完了です。


4.Certifications and Keys
 次はトークン署名に使う証明書の設定です。

 自己発行証明書でも構わないので.pfxファイルをアップロードします。
 これがACSが発行するトークンの署名に利用されます。

 設定項目は以下の通りです。
 ・Name:表示名
 ・Used for:利用用途(トークンの署名もしくは暗号化)
 ・Type:証明書のタイプ
 ・Certificate:証明書

 今回は以下の通り設定します。
 ・Name:My Cert
 ・Used for:Token Signing
 ・Type:X.509 Certificate
 ・Certificate:作成したpfxファイルとパスワード

 [Save]をクリックし設定を完了します。
















ここまででACS側の設定は完了です。
ここからはRPとなるアプリケーションを作成していきます。

Visual Studio 2010を管理者として起動し、ASP.NET Webアプリケーションを作成します。
※今回は.NET Framework3.5をベースにプロジェクトを作成しましたが、.NET Framework4.0をベースに作る場合は後でWeb.configにhttpRuntime requestValidationMode="2.0"を書いてあげる必要があります。

実装・設定するのは以下の3点だけです。
1.URLの設定
  →今回Visual Studioのデバッグ用アプリケーションサーバとしてテストを行いましたのでポート番号を固定し、ACS上のURLと整合性を取ります。
2.STS参照の追加
  →ACSのFederationMetadataの読み込みを行い、このアプリケーションの認証はACSが行うように設定します。
3.Claimを表示するコード
  →今回は単純にわたってきたClaimをラベルに表示させます。



1.URLの設定

 ソリューションのプロパティからVisual Studio開発サーバのポートを先ほど指定した20000に設定します。














2.STS参照の追加














 以下の設定を行います。
 アプリケーションURL:http://localhost:20000
 STS Federation Metadata:https://[プロジェクト名].accesscontrol.appfabriclabs.com:443/FederationMetadata/2007-06/FederationMetadata.xml
 ※ACSポータルのApplication Integrationにエンドポイントアドレスは記載されています。

















3.Claimを表示するコード

 画面にラベルを張り付けてテキストにname属性を表示するコードを書きます。

 ここでは単純にPage_Loadに
  lbl_name.Text = Page.User.Identity.Name
 とコードを書いています。
















いよいよ実行です。
今回はVisual Studioの開発サーバを使うので、そのままF5を押してデバッグ実行です。

まず、ホームレルム(認証を受けるIdP)を選択する画面にリダイレクトされますので、AD FS2.0を選んでみます。





















AD FS2.0のログイン画面にリダイレクトされ、認証を受けるとアプリケーションに戻り、name属性が表示されます。









































次はGoogleを選択してみます。
Googleのログイン画面にリダイレクトされ、認証を受けるとアプリケーションに戻り、name属性が表示されます。









































いかがでしょうか?
当然RPを増やしていけばAppFabric ACSが発行(変換)したトークンを使いまわせるのでシングルサインオン環境の構築も容易です。

要望があるとすれば、現状ではAD FS2.0をIdPとする時にFederationMetadataを読み込む形でしかIdP設定ができないので、どうしてもインターネット上にAD FS2.0を公開する必要が出てきてしまいます。これを手動での登録、もしくはFederationMetadata.xmlのアップロードという形での対応ができればよりイントラ~インターネットの連携がしやすくなるのでは?と思います。

あとは早くラボではなく正式にリリースがされるのを期待しています。