最近になってようやく日本語のアイデンティティ関連の情報も増えてきました。
例えば日本マイクロソフトでも Technet で翻訳情報などを集めているサイトが大分整理されてきました。
http://technet.microsoft.com/ja-jp/cloud/gg190748.aspx
他にも @kamebuchi さんが AD FS2.0 や AppFabric Access Control Service の情報を発信していたり、と私が Geneva の情報を必死で集めていたころとは大違いです。
今回はそんな中で AD FS2.0 の構築手順を割とリアルにまとめているサイトを紹介します。
http://www.tensi.info/home/kensyo-infra
実はこのサイトを作っているのは知り合いなのですが、ドメイン名の tenshi とは正反対の性格をしている”できる”エンジニアです。
今後色々とコンテンツの拡充を予定しているらしいので要注目です。
2011年4月14日木曜日
2010年12月1日水曜日
「AD FS 2.0 デザインガイド」の日本語版
なかなか日本語リソースが少ないこの領域ですがだんだんドキュメントの翻訳が進んできているようです。
今日も以下のURLで「AD FS 2.0 デザインガイド」の日本語版が公開されています。
http://technet.microsoft.com/ja-jp/library/gg308546.aspx

コンテンツは以下の構成となっています。
・AD FS 2.0 を展開する前に重要な概念について理解する
・AD FS 2.0 の展開目的を特定する
・展開目的を AD FS 2.0 設計にマップする
・展開を計画する
・フェデレーション サーバー の配置を計画する
・フェデレーション サーバー プロキシの配置を計画する
・付録 A: AD FS 2.0 の要件を確認する
私もAD FS 2.0(当時はGenevaでしたが)を触り始めたころは英語版のマニュアルと格闘していたのですが、その後このデザインガイドの英語版やEuginio Paceさんの「A Guide to Claim-Based Identity and Access Control」やVittorio Bertocciさんの「Understanding Windows CardSpace」を参考にして小難しい概念を理解しようとしていた思い出があります。


なかなか特殊な分野なのか日本語での書籍は商業的にも難しいのかも知れませんが、このように日本語のオンラインドキュメントが出てきたことで初めの一歩のハードルは下がってきたのかも知れません。
(一部製品のメニューの日本語名とは異なる用語が使われてしまっているので混乱はあるかも知れませんが・・・。元々のメニューの日本語がわかりにくすぎる、という説もw)
今日も以下のURLで「AD FS 2.0 デザインガイド」の日本語版が公開されています。
http://technet.microsoft.com/ja-jp/library/gg308546.aspx

コンテンツは以下の構成となっています。
・AD FS 2.0 を展開する前に重要な概念について理解する
・AD FS 2.0 の展開目的を特定する
・展開目的を AD FS 2.0 設計にマップする
・展開を計画する
・フェデレーション サーバー の配置を計画する
・フェデレーション サーバー プロキシの配置を計画する
・付録 A: AD FS 2.0 の要件を確認する
私もAD FS 2.0(当時はGenevaでしたが)を触り始めたころは英語版のマニュアルと格闘していたのですが、その後このデザインガイドの英語版やEuginio Paceさんの「A Guide to Claim-Based Identity and Access Control」やVittorio Bertocciさんの「Understanding Windows CardSpace」を参考にして小難しい概念を理解しようとしていた思い出があります。


なかなか特殊な分野なのか日本語での書籍は商業的にも難しいのかも知れませんが、このように日本語のオンラインドキュメントが出てきたことで初めの一歩のハードルは下がってきたのかも知れません。
(一部製品のメニューの日本語名とは異なる用語が使われてしまっているので混乱はあるかも知れませんが・・・。元々のメニューの日本語がわかりにくすぎる、という説もw)
2010年7月12日月曜日
ADFS2.0の相互運用性 [7/26更新]
以前ADFS2.0がSAML2.0の相互運用性テストにパスした、という話題がありましたがSAMLに対応した他のSSO製品やサービスとの連携の情報が少しずつ出てきました。
◆他のフェデレーション/SSO製品との相互運用性
Sun OpenSSO
IBM Tivoli Federated Identity Manager
CA SiteMinder
7/26更新
Oracle Identity Federation
また、SAMLに対応しているサービスとの連携については某所で記事を近々公開する予定なので、乞うご期待!
ちなみに、GoogleApps、Salesforce.com、Windows LiveID、Windows Azureとの連携のHow Toを公開予定です。
↓調査・実験の過程の各所の私の足跡(というか残骸)です。待ちきれない方はご参考までに(笑)
GoogleApps
Salesforce.com
2010年6月23日水曜日
TechEd North Americaのセッション資料
6月7日~10日に北米ニューオーリンズで開催されていたMicrosoft TechEdの資料が公開されてます。
さすがに日本とは比べ物にならないくらいのボリュームです。
とりあえずセッションの中からADFS2.0関連、FIM2010関連のものをピックアップして斜め読みをしてみました。
8月の日本開催のセッション予定を見ているとADFS2.0、FIM2010それぞれ1つずつという状態なので、ちょっとさみしい感じです。
とは言え濃い内容になっていることに期待!と言ったところでしょうか。
さすがに日本とは比べ物にならないくらいのボリュームです。
とりあえずセッションの中からADFS2.0関連、FIM2010関連のものをピックアップして斜め読みをしてみました。
| セッションコード | タイトル | 概要(自分メモ) |
| COS206 | Microsoft Business Productivity Online Standard Suite (BPOS) v.Next: Identity and Access Solutions | BPOSへのFederation ・OnlineID ・OnlineID+DirSync ・FederatedID+DirSync |
| OSP311 | From N to Z: Authentication and Authorization in Microsoft SharePoint Server 2010 | @SPIdentity MVP for MOSS MOSS2010+ADFS2.0 |
| SIA201 | Understanding Claims-Based Applications: An Overview of Active Directory Federation Services (AD FS) 2.0 and Windows Identity Foundation | David Chappell ADFS2.0+WIF+CardSpace2.0のオーバービュー |
| SIA302 | Identity and Access Management: Centralizing Application Authorization Using Active Directory Federation Services 2.0 | MSIT BPOS連携などのオーバービュー |
| SIA303 | Identity and Access Management: Windows Identity Foundation and Windows Azure | Vittorio Bertocci Azure上にWIFを使ったアプリケーションをデプロイする際の具体的なTIPSなど |
| SIA304 | Identity and Access Management: Windows Identity Foundation Overview | Vittorio Bertocci WIFの概要 |
| SIA305 | Top 3 Security and Privacy Challenges in Identity Infrastructures and How to Overcome Them with U-Prove | U-Prove 概要の説明とCTP |
| SIA307 | Identity and Access Management: Deploying Microsoft Forefront Identity Manager 2010 Certificate Management | FIM2010 CLM |
| SIA318 | Microsoft Forefront Identity Manager 2010 Deploying FIM | FIM2010のデプロイ |
| SIA319 | Forefront Identity Manager 2010: In Production | 本番環境におけるFIM2010の運用 |
| SIA321 | Business Ready Security: Exploring the Identity and Access Management Solution | Business Ready Securityのオーバービュー |
| SIA326 | Identity and Access Management: Single Sign-on Across Organizations and the Cloud - Active Directory Federation Services 2.0 Architecture Drilldown | ADFS2.0のデプロイ |
| SIA327 | Identity and Access Management: Managing Active Directory Using Microsoft Forefront Identity Manager | FIM2010の概要 |
8月の日本開催のセッション予定を見ているとADFS2.0、FIM2010それぞれ1つずつという状態なので、ちょっとさみしい感じです。
とは言え濃い内容になっていることに期待!と言ったところでしょうか。
2010年5月26日水曜日
クレイムベースのアイデンティティ&アクセスコントール本が届きました
先日「早わかり!クレイムベースのアイデンティティ&アクセス管理」というポストで紹介したA Guide to Claims-Based Identity and Access Controlですが、内容的に非常に興味深かったので、著者のEugenio Pace氏に連絡をしてみました。
中々興味深い分野なので今後も継続的にやり取りができると良いなぁ、、と思っています。
やり取りの中で先の文書のハードコピーを頂いたので(しかもサイン入り!)紹介します。
彼のblogエントリには他にもAzure関連のガイダンスなど参考になるものが多くあるので、今後も要ウォッチです。
ついでに、昨日のInfoQにEugenio氏へのADFS2.0とWIFに関するインタビューが載っていましたのでこちらも紹介。
2010年5月6日木曜日
Active Directory Federation Services 2.0のRTWリリース
Ping Identityのblogで4月の終わりにリークされていましたが、AD FS2.0RTWが5月5日にリリースされました。
これで、Identity Metasystemを構成する3つの要素のうち、2つまでが正式にリリースされたことになります。
・Windows Identity Foundation [リリース済み]
・Active Directory Federation Services 2.0 [リリース済み]
・Windows Card Space 2.0 [ちょっと延期中]
Windows Card Space 2.0についてはU-ProveやOpenID対応の関連でちょっと延期されて、2010年Q2にCTPが出てくるようです。
さて、今回のRTW版ですがこれまでのユーザインターフェイスが英語のみだったのがインストーラ、管理コンソールやヘルプも日本語化されています。
ただ、相変わらずWindows Server 2008 without Hyper-Vにはインストール出来ないようです。特にHyper-Vを使うわけではないので、単にバージョンチェックではねているだけだと思いますが・・・
インストーラの画面。日本語になってます。
2010年4月8日木曜日
早わかり!クレイムベースのアイデンティティ&アクセス管理
先日マイクロソフトのPatterns&PracticesチームからリリースされたA Guide to Claims-based Identity and Access Controlを読み進めているのですが、ある意味シンプルなんだけどある意味とっつきにくい「クレームベースのアイデンティティ&アクセス管理」をとてもわかりやすく説明した例があったので紹介します。
以前Tech Fieldersコラムにフェデレーションの話を書いた時は入国審査を例にクレームベースのセキュリティについて説明しましたが、この今回紹介する例の方がより正確でシンプルで良いと思いました。
舞台は同じく空港なのですが、以下のようなメタファを用いています。
これらを使って見事に認証、トークンの発行、トークンの確認とクレームによる認可を表現しています。

以前Tech Fieldersコラムにフェデレーションの話を書いた時は入国審査を例にクレームベースのセキュリティについて説明しましたが、この今回紹介する例の方がより正確でシンプルで良いと思いました。
舞台は同じく空港なのですが、以下のようなメタファを用いています。
| 用語 | メタファ |
| セキュリティトークン | 搭乗券 |
| クレーム | 名前、便名、座席ランク |
| STS(セキュリティトークンサービス) | チケットカウンター |
| RP(アプリケーション) | 搭乗カウンター |
これらを使って見事に認証、トークンの発行、トークンの確認とクレームによる認可を表現しています。

(1)利用者がチケットカウンター(STS)で認証される
→パスポートの顔写真と本人の顔の一致をもって「認証」する
(2)チケットカウンターが搭乗券(セキュリティトークン)を発行する
→搭乗券の中には利用者の名前、便名、座席ランク(トークン)が書かれている
→チケットカウンターが発行したことを証明するために磁気テープで署名されている
(3)利用者が搭乗券(セキュリティトークン)を搭乗カウンター(RP)に提示する
→搭乗カウンターは提示された搭乗券が磁気テープ(署名)を見て正しいものかを確認する(信頼された発行元かどうかの確認)
→搭乗券の中の便名、座席ランクを見て利用者を案内(認可)する
私はこの例はかなりしっくりきました。
みなさんはいかがでしょうか?
→パスポートの顔写真と本人の顔の一致をもって「認証」する
(2)チケットカウンターが搭乗券(セキュリティトークン)を発行する
→搭乗券の中には利用者の名前、便名、座席ランク(トークン)が書かれている
→チケットカウンターが発行したことを証明するために磁気テープで署名されている
(3)利用者が搭乗券(セキュリティトークン)を搭乗カウンター(RP)に提示する
→搭乗カウンターは提示された搭乗券が磁気テープ(署名)を見て正しいものかを確認する(信頼された発行元かどうかの確認)
→搭乗券の中の便名、座席ランクを見て利用者を案内(認可)する
私はこの例はかなりしっくりきました。
みなさんはいかがでしょうか?
2010年3月12日金曜日
色々と気になるニュースなどなど
RSAカンファレンスもありましたし、色々と気になるニュースや記事が色々と
・Claims-based Identity and Access Control Guideのリリース
しばらく前から気になる記事ではありましたが、このたび正式にリリースされたようです。
今読んでいるCloud Security and Privacyが読み終わったらじっくり読みたいと思います。
・Windows Identity Foundation Developer Workshopの開催
残念ながら日本では開催されませんが、3月の終わり~6月の頭にかけて6カ国で開催されます。
Azure連携も含めWIF三昧なセッションやラボが繰り広げられるようです。
・The Experts Conference 2010の開催
毎年開催されているディレクトリ、アイデンティティ関連のカンファレンスです。今年は4月の終わりにロサンゼルスで開催されます。
さすがに今年はAD FS2.0、FIM2010関連のセッションがてんこ盛りです。
・その他気になる情報
AD FS2.0/OpenID連携を使ってOpenIDでSharePoint2010へアクセス
上記とも関連しますが、WIF SDKとDotNet OpenIDを使ってOpenIDとWS-Federationのクレーム変換を行うカスタムSTSの作り方
なかなか目を通しきれませんが、どれも興味深い情報ばかりなのでがんばってウォッチしていきます。
2010年2月27日土曜日
参加してきました「Tech Fielders の集い 特別編 - おかげさまで Active Directory 10周年 セミナー 」
今週はTechDaysもありましたし、本日のAD10周年イベントもあり盛りだくさんでした。

細かい情報はあとからTechFieldersのサイトに載ると思うので、印象に残った点だけ軽く振り返ってみますが、twitterのハッシュタグ#ad10thを見ていて感じたのは、「フェデレーション/ADFS」と「PowerShell」に対する反応の多さが印象的でした。
PowerShellはともかく、これまでフェデレーションって何に使うの?という反応ばかりでしたが、やはりここにきてクラウド連携と関連してみなさんの興味も急上昇、、という感じなのだと思います。
さて、各セッションについてもざっと流してみます。
■Active Directory 10年の歩み/MCS待鳥さん、柿沼さん
・設計の移り変わり
ADを取り巻く環境(NW、HWスペックや価格)の変化に伴いサイト構成(分散配置から集中配置へ)やDCのサイジング(OSの64bit化に伴う保持オブジェクト数の増加など)が変わってきた、というお話。
・ADの使いこなし例
3つの例を挙げていました。
1.Excelで簡単アカウント管理&監査
VBA+ADSIでオブジェクトの管理台帳を!という使い方です。昔私も作りました。ID管理製品を入れるほどの規模ではない企業の場合これで十分なんだと思います。
2.パスワード変更情報を取り出す
PCNSを使ってDCへのパスワード変更をフックする例です。意外とみなさんPasswordChangeNotify()関数をご存知ないようで、twitterのTLには感嘆の声が上がっていました。そう言えば以前パスワードフック関連のポストをしたのですが、いまだにアクセス数が上位です。
3.見えないサーバで個人情報管理
IPSecを使って簡易的な検疫をしましょう、というお話。簡単に実装できるのでやってみてもよいかもしれません。
■Active Directory 提案のツボ/SE山崎さん
Windows Server使い倒し塾でおなじみの山崎さんのセッションです。既に今日の資料がポストされているので、詳しくはそちらを見てください。
山崎さんもやはりADの今後、というところではADFS2.0とAzure連携というお話をしておられました。
■Active Directory/Group Policyよくある質問/サポートチーム北川さん
ある意味、今回のセミナの目玉の一つだったのではないでしょうか?
普段は切羽詰まった状態でメールや電話でしかお話できない製品サポートチームのリアルな話でした。
よくある障害の事例として、
1.DCへアクセスできないケース
名前解決ができない
ネットワーク上へアクセスできない
NATしている(SMBがNAT非対応)
2.sysvolへSMB通信が失敗するケース
DFS異常など
3.低速リンクの検出により一部のポリシーがあたらないケース
ICMPで検出しているので、ICMPがブロックされていると低速リンクとみなされる
が紹介されたり、一部のDCの破損が起きた場合の復旧手順などが紹介されました。
こちらもしばらくしたらblogに本日の情報をアップしてくださるということなので、細かくはそちらに期待です。
■Active Directoryトラブル解決のツボ/ADSIサポートチーム渡部さん
こちらも上記と同じく濃いセッションです。
いつもお世話になっているADSI/ILMサポートチームの「お父さん」こと渡部さんのセッションです。
こちらは製品というよりもADSIやWMIなどの開発がらみも含めた微妙な領域のサポート部隊なので、プログラミングに依存する問題、環境・構成に依存する問題の切り分け~解決までのアプローチについて紹介していました。ある意味もっとも専門性が要求される部隊なのかも知れません。
細かいアプローチについてはblogへの掲載を期待するとして、紹介されていた事例は以下の通りでした。
1.ADSIで大量のオブジェクトを操作するとエラーがでるケース
→リソース(ポート)の枯渇の可能性を疑う(netstatで確認)
2.ADsOpenObject(OpenDsObject)が特定のDCに対して失敗する
→名前解決の可能性が高い
→DSQueryで対象のDCのオブジェクト参照を試す
→直接IPアドレスを指定する
3.ASP.NETアプリケーションがADを参照しようとすると認証エラーになる
→NTLM認証はダブルホップ認証ができないので、KerberosでWindows統合認証を構成する必要がある。(ダブルホップ:ブラウザ→IIS→DCという2段階で認証が行われる構成)
■パネルディスカッション/MVPを含む5人の濃い方々・・
話が盛りだくさんでまとめきれませんが、一言で言うと「ここに歴史あり」という感じでしょうか?
NT5.0と言われていた時代からかかわってこられた方々ばかりで、Active Directoryの成長を実際に支えてこられた方々の生の話でしたので、とても面白かったです。
特に印象に残ったのは、
・Active Directoryは10年間基本設計が変わっていないという点が素晴らしい
・今後認証基盤だけではなくアイデンティティ情報のレポジトリとしても活用されていくのではないか?
という2点でした。
既に登壇されたMVP国井さんがblogに本日の様子をアップしているのでそちらも合わせてご覧ください。
■Active Directoryを広めよう!/プロダクトマネージャ岡本さん
製品マーケティングの視点でActive Directoryを紹介していました。
国内の企業の規模別のActive Directory導入率など、普段は見られない貴重なデータを見ることができ、とても参考になりました。
できれば今後はActive Directoryの各コンポーネント別(DS、RMS、CS、LDS、FS)でも集計が取れると面白いかと思ったりしました。
また、今後の各種イベントの情報や、6月26日に出版される新しい書籍「Active Directory ID管理ガイド」の紹介もありました。(以前出ていたActive Directory ID自動管理ガイドの改定版?)
■そして懇親会!
イベント自体すごい人数が参加していましたので、懇親会もかなりの人数が参加されていたのではないでしょうか?
目玉はこのケーキでした。

限定の帯付きの「ひと目でわかるActive Directory(2008R2対応)」
限定200個のメダル
まぁ何にせよ大盛況でしたし、とても役に立ちました。
関係者の皆さんは大変だったと思います。本当にお疲れさまでした!
2010年2月24日水曜日
アイデンティティ視点で見るTechDays2010
昨日(2月23日)、今日(24日)とMicrosoft TechDays 2010に参加してきました。
基本的にデベロッパー向けのイベントなんですが、今回はAzureにフォーカスされているということもあり、クラウドを取り巻く開発・管理・インフラ、、という形でインフラ屋さんにとっても非常に役に立つ話が盛りだくさんでした。
と言いつつ、アイデンティティ視点ということで私が特に注目して聴いたのが、
・T1-304 Windows Identity Foundation によるクラウド連携認証基盤の構築
・T1-309 Windows Azure Platform AppFabric によるオンプレミス/クラウド ハイブリッド アプリケーションの構築
・T4-401 オンプレミス & クラウドにおける Identity 連携の全体像
の3つです。
※セッション一覧はこちらから
内容的に言うと、オンプレミスで用意するIdP(ADFS2.0、AD)とアプリケーション側でクレームをハンドリングするためのライブラリであるWIF(Windows Identity Foundation)、間をつなぐMicrosoft Federation GatewayやAzure Platform AppFabricのアクセスコントロールサービス、というオンプレミスからクラウドにまたがるアイデンティティ&アクセス管理についてを横断的に見てきた、という感じでしょうか。
大きなテーマとしては企業がクラウド上のサービスを使うに当たっての大きな課題であるオンプレミスとクラウドにまたがったシステムをいかに「セキュア」で「便利」に構築するか?その時にベースとなるアイデンティティはどうなるのか?という点をAzureに特化した際の一つの解が示されたと思います。
マイクロソフトの全体的なアイデンティティの方向性については以前紹介したKim Cameron氏のblogやアーキテクチャジャーナルに書かれている通りですが、クラウドの台頭というパラダイムシフトによりビジョンの実現に向けて製品への実装が加速した、という感じでしょうか。
詳細はエバンジェリスト安納さんがblogでActive Directoryの歴史と共に語ってくれていますが、以下のような仕組みが製品として提供されてこようとしています。
・企業内のアイデンティティ情報をクラウド(もしくは社外)と連携するための仕組み
→Active Directory Federation Services 2.0 ( ADFS2.0 )
・Azureの場合に代表してフェデレーションする窓口
→Microsoft Federation Gateway ( MFG )
・Azure上のサービスのアクセス権管理をする
→Windows Azure Platform AppFabric/アクセスコントロールサービス
※基本的にはWebサービス(WCF)を使う場合の権限管理
・認証/認可モデルの変化(クレームベースのセキュリティモデルへの変更)に伴うアプリケーションの対応※まさにIdentity Metasystem!
→Windows Identity Foundation ( WIF )

基本的にデベロッパー向けのイベントなんですが、今回はAzureにフォーカスされているということもあり、クラウドを取り巻く開発・管理・インフラ、、という形でインフラ屋さんにとっても非常に役に立つ話が盛りだくさんでした。
と言いつつ、アイデンティティ視点ということで私が特に注目して聴いたのが、
・T1-304 Windows Identity Foundation によるクラウド連携認証基盤の構築
・T1-309 Windows Azure Platform AppFabric によるオンプレミス/クラウド ハイブリッド アプリケーションの構築
・T4-401 オンプレミス & クラウドにおける Identity 連携の全体像
の3つです。
※セッション一覧はこちらから
内容的に言うと、オンプレミスで用意するIdP(ADFS2.0、AD)とアプリケーション側でクレームをハンドリングするためのライブラリであるWIF(Windows Identity Foundation)、間をつなぐMicrosoft Federation GatewayやAzure Platform AppFabricのアクセスコントロールサービス、というオンプレミスからクラウドにまたがるアイデンティティ&アクセス管理についてを横断的に見てきた、という感じでしょうか。
大きなテーマとしては企業がクラウド上のサービスを使うに当たっての大きな課題であるオンプレミスとクラウドにまたがったシステムをいかに「セキュア」で「便利」に構築するか?その時にベースとなるアイデンティティはどうなるのか?という点をAzureに特化した際の一つの解が示されたと思います。
マイクロソフトの全体的なアイデンティティの方向性については以前紹介したKim Cameron氏のblogやアーキテクチャジャーナルに書かれている通りですが、クラウドの台頭というパラダイムシフトによりビジョンの実現に向けて製品への実装が加速した、という感じでしょうか。
詳細はエバンジェリスト安納さんがblogでActive Directoryの歴史と共に語ってくれていますが、以下のような仕組みが製品として提供されてこようとしています。
・企業内のアイデンティティ情報をクラウド(もしくは社外)と連携するための仕組み
→Active Directory Federation Services 2.0 ( ADFS2.0 )
・Azureの場合に代表してフェデレーションする窓口
→Microsoft Federation Gateway ( MFG )
・Azure上のサービスのアクセス権管理をする
→Windows Azure Platform AppFabric/アクセスコントロールサービス
※基本的にはWebサービス(WCF)を使う場合の権限管理
・認証/認可モデルの変化(クレームベースのセキュリティモデルへの変更)に伴うアプリケーションの対応※まさにIdentity Metasystem!
→Windows Identity Foundation ( WIF )

個人的にはMFG、AppFabricのACSは全然触っていないので、少し触ってみようかな?と思えました。
※そう言えばAD Connectorってどこへ行ったんだろうか?
尚、とってもわかりにくいキーワードであるフェデレーションやクレームベースのセキュリティについてTech Fieldersのサイトにコラムを書いたので、よろしければご覧ください。
・TechFieldersインタビュー AD FS 2.0 でアプリケーションの世界が変わる
・TechFieldersコラム システム管理者のためのフェデレーション講座
まぁ何にせよTechDays関係者の皆さんお疲れさまでした!
※そう言えばAD Connectorってどこへ行ったんだろうか?
尚、とってもわかりにくいキーワードであるフェデレーションやクレームベースのセキュリティについてTech Fieldersのサイトにコラムを書いたので、よろしければご覧ください。
・TechFieldersインタビュー AD FS 2.0 でアプリケーションの世界が変わる
・TechFieldersコラム システム管理者のためのフェデレーション講座
まぁ何にせよTechDays関係者の皆さんお疲れさまでした!
2010年2月17日水曜日
FIM/ADFS関連の情報を扱うページ一覧
このblogを始めたきっかけともなったFIM2010ですが、MIISやILMを含め日本語の情報が非常に少ないのが現状です。
そんなわけで英語のサイトも含め色々と探して情報を収集している日々なのですが、そろそろ見ているサイトの数も管理しきれないくらい多くなってきたので、自分自身の整理の意味も込めて一覧を書いておこうと思います。
おそらく皆様のお役にも立つとも思います。
※尚、製品そのもののページは入れていません。
【FIM/ILM関連のページ】
◆マイクロソフトの日本語サイト
◆マイクロソフトの英語サイト
◆その他サイト
【AD/ADFS関連のページ】
◆マイクロソフトの日本語サイト
◆マイクロソフトの英語サイト
◆その他サイト
【その他、マイクロソフト関連のIdentity関連の情報を扱うページ】
そんなわけで英語のサイトも含め色々と探して情報を収集している日々なのですが、そろそろ見ているサイトの数も管理しきれないくらい多くなってきたので、自分自身の整理の意味も込めて一覧を書いておこうと思います。
おそらく皆様のお役にも立つとも思います。
※尚、製品そのもののページは入れていません。
【FIM/ILM関連のページ】
◆マイクロソフトの日本語サイト
| サイト名 | URL | 解説 |
| FIM TechCenter | http://technet.microsoft.com/ja-jp/ilm/default.aspx | |
| フィールドSEあがりの安納です | http://blogs.technet.com/junichia/ | エバンジェリスト安納さんのblog |
| 管理者は見た!~AD と ILM 一家の秘密~ | http://blogs.technet.com/jpilmblg/default.aspx | AD/ILMサポートチームのblog |
| Windows Sedrver使い倒し塾 | http://blogs.technet.com/windowsserverjp/default.aspx |
◆マイクロソフトの英語サイト
| サイト名 | URL | 解説 |
| Technetフォーラム Identity Lifecycle Manager | http://social.technet.microsoft.com/Forums/ja-JP/identitylifecyclemanager/threads | |
| Technetフォーラム Identity Lifecycle Manager 2 | http://social.technet.microsoft.com/Forums/ja-JP/ilm2/threads | |
| Bobby and Nima's Forefront Identity Manager Blog | http://blogs.technet.com/doittoit/default.aspx | |
| Identity Management | http://blogs.technet.com/identitymanagement/default.aspx | 製品チームのblog |
| Identity Management Extensibility | http://blogs.msdn.com/imex/default.aspx | FIM SDKなどでFIMを拡張する |
| Anthony Ho | http://blogs.technet.com/aho/default.aspx | FIMのパスワードリセット関連 |
| Craig McMurtry's WebLog | http://blogs.msdn.com/craigmcmurtry/ | |
| Mark Gabarra's Blog | http://blogs.msdn.com/markgabarra/ | |
| Shawn's MIIS/ILM/FIM Code Experiment | http://blogs.msdn.com/therabournidentity/ | |
| Darryl Russi's Blog | http://blogs.msdn.com/darrylru/default.aspx | サイジングとかパフォーマンスとか |
◆その他サイト
| サイト名 | URL | 解説 |
| Always on the clock | http://sophiakunii.spaces.live.com/ | MVP国井さん |
| 1dent1ty cHa0s | http://www.identitychaos.com/ | ensynch所属のMVP |
| Identity Management Crisis | http://www.idmcrisis.com/ | |
| Jorge 's Quest For Knowledge! | http://blogs.dirteam.com/blogs/jorge/default.aspx | MVP |
| missmiis | http://www.wapshere.com/missmiis/ | Technet Forumでも活躍しているCarolさんのblog |
| The new Puttyq.com | http://puttyq.com/blog/ | MVP |
| ILM Best Practices | http://www.ilmbestpractices.com/blog/blogger.html | MVP |
| CSHARK | http://c--shark.blogspot.com/ | FIM関連のツールとか |
| Apollo Jack | http://www.apollojack.com/ | |
| IdM for Real | http://bobbradley.spaces.live.com/default.aspx | |
| Microsoft IDM | http://www.microsoftidm.com/ | MVP |
| MMSUG | http://tech.groups.yahoo.com/group/MMSUG/ | MIISのYahooGroup |
| microsoft.public.metadirectory | http://www.archivum.info/microsoft.public.metadirectory/ | NewsGroup |
| Identity Management at CERN | https://espace.cern.ch/idm/default.aspx | CERNのIdM。。天使と悪魔以外でCERNの名前を聞くとは思ってもみませんでした(笑) |
【AD/ADFS関連のページ】
◆マイクロソフトの日本語サイト
| サイト名 | URL | 解説 |
| Active Directory TechCenter | http://technet.microsoft.com/ja-jp/activedirectory/default.aspx | |
| Shigeya Tanabe's blog | http://blogs.technet.com/stanabe/ | エバンジェリスト田辺さん |
◆マイクロソフトの英語サイト
| サイト名 | URL | 解説 |
| Kim Cameron's Identity Weblog | http://www.identityblog.com/ | 言わずと知れたChief Architect of Identity |
| Ask the Directory Services Team | http://blogs.technet.com/askds/default.aspx | ADサポートチーム |
| “Geneva” Team Blog | http://blogs.msdn.com/card/default.aspx | |
| Vibro.NET | http://blogs.msdn.com/vbertocci/default.aspx | |
| ADFS Documentation Blog | http://blogs.technet.com/adfs_documentation/default.aspx | |
| Eugenio Pace | http://blogs.msdn.com/eugeniop/default.aspx |
◆その他サイト
| サイト名 | URL | 解説 |
| des on Federated Identity … less is more | http://identity-des.com/ | |
| ZULFIQAR'S WEBLOG | http://www.zamd.net/default.aspx | |
| Matias Woloski’s Blog | http://blogs.southworks.net/mwoloski/ | |
| Jackson's Identity Management & Active Directory Reality Tour Travelblog | http://jacksonshaw.blogspot.com/ |
【その他、マイクロソフト関連のIdentity関連の情報を扱うページ】
| サイト名 | URL | 解説 |
| Mike Jones: self-issued | http://self-issued.info/ | Identity関連のニュースなど |
| identityjunkie.com | http://blog.identityjunkie.com/ | MVP |
| Identity Sander | http://identitysander.wordpress.com/ | Identity関連のニュースなど |
2010年1月16日土曜日
ADFS2.0 & WIF on AzureでオンプレミスとクラウドのSSO その3
意外とご好評を頂いた?このシリーズも今回で最終回です。
いよいよ今回は、
3.Azure上のアプリケーションを作成・発行する
4.シングルサインオンしてみる
をお送りします。
初回にも書きましたが、Azure上でもオンプレミスと同じコードが動きますが、環境面での違いを吸収するために少々設定が必要になります。
環境面での違いをまとめると、下記のようになります。
では作業を始めます。
流れとしては、
・Azure上へサービスを作成する
・証明書を準備する
・Azure上へ証明書をアップロードする
・アプリケーションを作成する
・Azure上へデプロイ/実行する
・ADFS2.0にRelyingPartyを設定する
・Azure上のアプリケーションの動作を確認する
・オンプレミスアプリケーションとのSSO動作を確認する
となります。
少々ステップが多くなりますが、順番に見ていきます。
◆Azure上へサービスを作成する
プロジェクトを開き、New ServiceからHostedサービスを作成します。
注)ここで作成したサービス名を証明書にも使うので記録しておきます。
今回は「pasvfed」という名前を使いました。

サービスを追加し、Hosted Servicesを選択します。

以下のパラメータでサービスを作成します。
◆証明書を準備する
証明書を作成するのにネイティブ暗号化APIモジュール(CAPICOM)を使用します。
もちろん上記リンクからダウンロードしても良いのですが、Identity Training Kitに入っているので今回はそちらを使いました。(CAPICOMそのものよりも後で出てくる証明書作成のバッチファイルが欲しかったので)
※ちなみにCAPICOMは<Identity Training Kitインストールフォルダ>\Labs\WindowsAzureAndPassiveFederation\Source\Setup\Scripts以下にあるcapicom_dc_sdk.msiです。
インストールが終わったら証明書の作成とインストールを行います。
インストールは同じく<Identity Training Kitインストールフォルダ>\Labs\WindowsAzureAndPassiveFederation\Source\Assets以下にある、CreateCert.cmdを使います。
まず、Visual Studioコマンドプロンプトを管理者で実行します。

いよいよ今回は、
3.Azure上のアプリケーションを作成・発行する
4.シングルサインオンしてみる
をお送りします。
初回にも書きましたが、Azure上でもオンプレミスと同じコードが動きますが、環境面での違いを吸収するために少々設定が必要になります。
環境面での違いをまとめると、下記のようになります。
| ポイント | Azure | オンプレミス |
| 証明書のインストール方法 | サービス毎に証明書をアップロード | IISへの設定 |
| Webサイトへの証明書のバインド方法 | プロジェクト側(WebRole)で使う証明書を指定 | IISのサイトの設定 |
| WIFコンポーネントの呼び出し方法 | プロジェクトにWIFコンポーネントをパッケージングして一緒にデプロイ | アプリケーションサーバにインストールされているWIFコンポーネントへアクセス |
では作業を始めます。
流れとしては、
・Azure上へサービスを作成する
・証明書を準備する
・Azure上へ証明書をアップロードする
・アプリケーションを作成する
・Azure上へデプロイ/実行する
・ADFS2.0にRelyingPartyを設定する
・Azure上のアプリケーションの動作を確認する
・オンプレミスアプリケーションとのSSO動作を確認する
となります。
少々ステップが多くなりますが、順番に見ていきます。
◆Azure上へサービスを作成する
プロジェクトを開き、New ServiceからHostedサービスを作成します。
注)ここで作成したサービス名を証明書にも使うので記録しておきます。
今回は「pasvfed」という名前を使いました。

サービスを追加し、Hosted Servicesを選択します。

以下のパラメータでサービスを作成します。
| 項目 | 設定値 | 備考 |
| Service Label | pasvfed | |
| Public Service Name | http://pasvfed.cloudapp.net | |
| Region | Anywhere US | 何故かAnywhere AsiaだとDr. Watsonが出たので |
◆証明書を準備する
証明書を作成するのにネイティブ暗号化APIモジュール(CAPICOM)を使用します。
もちろん上記リンクからダウンロードしても良いのですが、Identity Training Kitに入っているので今回はそちらを使いました。(CAPICOMそのものよりも後で出てくる証明書作成のバッチファイルが欲しかったので)
※ちなみにCAPICOMは<Identity Training Kitインストールフォルダ>\Labs\WindowsAzureAndPassiveFederation\Source\Setup\Scripts以下にあるcapicom_dc_sdk.msiです。
インストールが終わったら証明書の作成とインストールを行います。
インストールは同じく<Identity Training Kitインストールフォルダ>\Labs\WindowsAzureAndPassiveFederation\Source\Assets以下にある、CreateCert.cmdを使います。
まず、Visual Studioコマンドプロンプトを管理者で実行します。
CreateCert.cmdのあるフォルダへ移動して、以下を実行します。
このとき、引数に先程Azure上で作成したサービスの名称を渡します。
実行すると、秘密キーのパスワードの作成、秘密キーのパスワード入力を求められるので「abc!123」を入力します。
※CreateCert.cmdをそのまま使う場合、パスワードはabc!123である必要があります。
詳しくはバッチファイルの中を見るとわかります。


その後、証明書インストール時にセキュリティの警告が出るのが「はい」をクリックします。

| xxxx:\> CreateCert.cmd pasvfed |
このとき、引数に先程Azure上で作成したサービスの名称を渡します。
実行すると、秘密キーのパスワードの作成、秘密キーのパスワード入力を求められるので「abc!123」を入力します。
※CreateCert.cmdをそのまま使う場合、パスワードはabc!123である必要があります。
詳しくはバッチファイルの中を見るとわかります。
その後、証明書インストール時にセキュリティの警告が出るのが「はい」をクリックします。
コマンドが成功するとcertsフォルダの中に、
・pasvfed.cloudapp.net.cer
・pasvfed.cloudapp.net.pfx
・pasvfed.cloudapp.net.pvk
という3つのファイルが出来上がります。
◆Azure上へ証明書をアップロードする
先程作成した証明書をAzure上へ予めアップロードしておきます。手順としてAzureのサービスのCertificatesからManageをクリックします。

作成した証明書(pfxファイル)を選択肢、パスワードに先ほど指定した「abc!123」を指定し、uploadを行います。

成功するとInstalled Certificatesにアップロードした証明書が表示されます。
◆アプリケーションを作成する
・プロジェクトの作成
オンプレミス側で実行したのと同様にVSを管理者として起動し、新しいプロジェクトを以下の通り作成します。


・SSLの設定
次に、WebロールのSSL設定を行います。
ソリューションエクスプローラからpasvfed→Roles→Webを右クリックしてプロパティウィンドウを表示します。

・pasvfed.cloudapp.net.cer
・pasvfed.cloudapp.net.pfx
・pasvfed.cloudapp.net.pvk
という3つのファイルが出来上がります。
◆Azure上へ証明書をアップロードする
先程作成した証明書をAzure上へ予めアップロードしておきます。手順としてAzureのサービスのCertificatesからManageをクリックします。

作成した証明書(pfxファイル)を選択肢、パスワードに先ほど指定した「abc!123」を指定し、uploadを行います。

成功するとInstalled Certificatesにアップロードした証明書が表示されます。
◆アプリケーションを作成する
・プロジェクトの作成
オンプレミス側で実行したのと同様にVSを管理者として起動し、新しいプロジェクトを以下の通り作成します。
| 項目 | 値 | 備考 |
| プロジェクト名 | pasvfed | Azure上のサービス名と合わせます |
| プロジェクトの種類 | Visual C# → Cloud Service | もちろん言語は任意 |
| テンプレート | Windows Azure Cloud Service | |
| 追加するロール | ASP.NET Web Role | |
| ロール名 | Web | もちろん任意 |
・SSLの設定
次に、WebロールのSSL設定を行います。
ソリューションエクスプローラからpasvfed→Roles→Webを右クリックしてプロパティウィンドウを表示します。

Certificatesメニューを開き、「Add Certificate」をクリックし、以下の通り証明書を設定します。

次に追加した証明書を使うようにエンドポイントの設定を行います。Endpointsメニューを開き、以下の様に設定します。

| 項目 | 値 | 備考 |
| Name | pasvfed | |
| Store Location | Local Machine | デフォルト |
| Store Name | My | デフォルト |
| Thumbprint | 右側のボタンをクリックして先ほど作成したpasvfedという名前の証明書を選択する |

次に追加した証明書を使うようにエンドポイントの設定を行います。Endpointsメニューを開き、以下の様に設定します。
| 項目 | 値 | 備考 | |
| HTTP | 無効 | ||
| HTTPS | 有効 | ||
| Name | HttpsIn | デフォルト | |
| Port | 443 | デフォルト | |
| SSL certificate name | pasvfed | ドロップダウンリストから選択 | |

・参照設定の追加
Webロールのプロジェクトの参照設定にオンプレミスと同様にMicrosoft.IdentityModelを追加します。
1点異なるのが、Microsoft.IdentityModelのプロパティに以下のパラメータを設定する必要がある点です。
・ローカルコピー:True
・特定バージョン:False

Webロールのプロジェクトの参照設定にオンプレミスと同様にMicrosoft.IdentityModelを追加します。
1点異なるのが、Microsoft.IdentityModelのプロパティに以下のパラメータを設定する必要がある点です。
・ローカルコピー:True
・特定バージョン:False
これは、Azure上のアプリケーションからWIFコンポーネントへアクセスできないため、
、ローカルコピーを有効にして強制的にプロジェクトパッケージにコンポーネントを含めるために行う設定です。
・STSへの参照を設定
これはオンプレミスと全く同じ手順です。
Webロールを右クリックして出てくるAdd STS referenceからWizardを開き、以下の設定を行います。※オンプレミスと異なる点はApplication URIのみです。
・Web.configの編集
Add STS referenceでWeb.configは書き換わるのですが、Azure上にアップロードした証明書の参照に関する設定を一部手動で追加する必要があります。
場所は、タグの内で、以下を追加します。
※ThumbprintはWebロールに設定した証明書のものを使用
・Default.aspxのコーディング
いよいよ実装ですが、コードはオンプレミスと全く同じものを使います。

ここまででアプリケーションの実装は完了です。次はいよいよAzure上へのデプロイです。
◆Azure上へデプロイ/実行する
ソリューションエクスプローラからpasvfedプロジェクトを右クリックして「発行」をクリックします。
自動的にパッケージファイルが作成されたフォルダとブラウザが開き、Azureのサイトへ移動されます。
プロジェクトからサービスを開き、Production環境のDeployボタンをクリックします。
※今回は直接Production環境へデプロイします。これは、Azure上のアプリケーションはローカル、ステージング、プロダクションのそれぞれの環境でURIが変わるため、Passive Federationではアプリケーション→STS→アプリケーションとリダイレクションで遷移させる際に実行環境によって遷移先が変わってしまうためです。本当はHOSTヘッダをみて遷移先を変えるなどの工夫をするのですが、STSにADFS2.0を使う場合はそのあたりの作り込みが出来ない?ので、私は開発環境、ステージング環境もそれぞれRelying Partyとして登録しています。(ただの調査不足かも知れませんが)

先ほど出来上がったパッケージファイルと構成ファイルをアップロードします。
ラベルは適当な文字列でOKです。


デプロイが完了したらRunをクリックしアプリケーションを実行します。

ステータスがInitializingになると、しばらく時間がかかるのでその間にSTSの設定をしておきましょう。

◆ADFS2.0にRelyingPartyを設定する
これは前回オンプレミスで作成したのと同様の手順です。今回作成したアプリケーションのFederationMetadata.xmlを読み込ませると自動的にRelyingPartyのURIとしてpasvfed.cloudapp.netが設定されます。

◆Azure上のアプリケーションの動作を確認する
そんなことをしているうちに、AzureのサービスのステータスがReadyになります

準備が出来たら、ブラウザでhttps://pasvfed.cloudapp.net/へアクセスしてみます。
オンプレミスと同じようにSTSへリダイレクトされ、ログインするとAzure上のアプリケーションが表示されます。


◆オンプレミスアプリケーションとのSSO動作を確認する
最後に、本当にオンプレミスとシングルサインオンになっているかを試してみます。
最初にオンプレミスへアクセスします。
するとSTSへリダイレクトされ、オンプレミスアプリケーションが表示されます。

そのまま、オンプレミス上の「Azureアプリケーション」というハイパーリンクをクリックします。すると今度はSTSへのログオンすることなく、Azure上のアプリケーションが表示されます。

ということで、今回作成した環境で本当に基礎的なクレームベースのWebアプリケーションではありますが、オンプレミスとクラウドのアプリケーションのシングルサインオンが実現出来ました。
他にも色々とやりたい事が尽きないのですが、是非今度はOpenSSOとADFS2.0のフェデレーション環境下でオンプレミスはOpenSSO、AzureはWIF/ADFSという環境でのシングルサインオンとかにも手を出したいところです。
、ローカルコピーを有効にして強制的にプロジェクトパッケージにコンポーネントを含めるために行う設定です。
・STSへの参照を設定
これはオンプレミスと全く同じ手順です。
Webロールを右クリックして出てくるAdd STS referenceからWizardを開き、以下の設定を行います。※オンプレミスと異なる点はApplication URIのみです。
| ステップ | 設定項目 | 設定値 | 備考 |
| Welcome | Application configuration location | プロジェクトのweb.configファイル | 初期状態で指定されているので変更不要 |
| Application URI | https://pasvfed.cloudapp.net | 発行先となるURIを指定 | |
| Security Token Service | Security Token Service (STS) option | Use an existing STS | 既に作成したADFS2.0をSTSとして指定 |
| STS WS-Federation metadata document location | https://adfs20.eidentity.local/FederationMetadata/2007-06/FederationMetadata.xml | ADFS2.0のMetadataのエンドポイントを指定 | |
| STS signing certificate chain validation error | Certificate validation option | Disable certificate chain validation | STSが自己署名入り証明書を使っているため、証明書チェーンの確認を無効化する |
| Security Token encryption | Security Token encryption option | No encryption |
・Web.configの編集
Add STS referenceでWeb.configは書き換わるのですが、Azure上にアップロードした証明書の参照に関する設定を一部手動で追加する必要があります。
場所は、
| <servicecertificate> <certificatereference x509findtype="FindByThumbprint" findvalue="xxxxxx"> </servicecertificate> |
※ThumbprintはWebロールに設定した証明書のものを使用
・Default.aspxのコーディング
いよいよ実装ですが、コードはオンプレミスと全く同じものを使います。

ここまででアプリケーションの実装は完了です。次はいよいよAzure上へのデプロイです。
◆Azure上へデプロイ/実行する
ソリューションエクスプローラからpasvfedプロジェクトを右クリックして「発行」をクリックします。
自動的にパッケージファイルが作成されたフォルダとブラウザが開き、Azureのサイトへ移動されます。
プロジェクトからサービスを開き、Production環境のDeployボタンをクリックします。
※今回は直接Production環境へデプロイします。これは、Azure上のアプリケーションはローカル、ステージング、プロダクションのそれぞれの環境でURIが変わるため、Passive Federationではアプリケーション→STS→アプリケーションとリダイレクションで遷移させる際に実行環境によって遷移先が変わってしまうためです。本当はHOSTヘッダをみて遷移先を変えるなどの工夫をするのですが、STSにADFS2.0を使う場合はそのあたりの作り込みが出来ない?ので、私は開発環境、ステージング環境もそれぞれRelying Partyとして登録しています。(ただの調査不足かも知れませんが)

先ほど出来上がったパッケージファイルと構成ファイルをアップロードします。
ラベルは適当な文字列でOKです。


デプロイが完了したらRunをクリックしアプリケーションを実行します。

ステータスがInitializingになると、しばらく時間がかかるのでその間にSTSの設定をしておきましょう。

◆ADFS2.0にRelyingPartyを設定する
これは前回オンプレミスで作成したのと同様の手順です。今回作成したアプリケーションのFederationMetadata.xmlを読み込ませると自動的にRelyingPartyのURIとしてpasvfed.cloudapp.netが設定されます。

◆Azure上のアプリケーションの動作を確認する
そんなことをしているうちに、AzureのサービスのステータスがReadyになります

準備が出来たら、ブラウザでhttps://pasvfed.cloudapp.net/へアクセスしてみます。
オンプレミスと同じようにSTSへリダイレクトされ、ログインするとAzure上のアプリケーションが表示されます。


◆オンプレミスアプリケーションとのSSO動作を確認する
最後に、本当にオンプレミスとシングルサインオンになっているかを試してみます。
最初にオンプレミスへアクセスします。
するとSTSへリダイレクトされ、オンプレミスアプリケーションが表示されます。

そのまま、オンプレミス上の「Azureアプリケーション」というハイパーリンクをクリックします。すると今度はSTSへのログオンすることなく、Azure上のアプリケーションが表示されます。

ということで、今回作成した環境で本当に基礎的なクレームベースのWebアプリケーションではありますが、オンプレミスとクラウドのアプリケーションのシングルサインオンが実現出来ました。
他にも色々とやりたい事が尽きないのですが、是非今度はOpenSSOとADFS2.0のフェデレーション環境下でオンプレミスはOpenSSO、AzureはWIF/ADFSという環境でのシングルサインオンとかにも手を出したいところです。
2010年1月14日木曜日
ADFS2.0 & WIF on AzureでオンプレミスとクラウドのSSO その2
前回のポストがtwitterで意外と反響がありましたので、取り急ぎ続きを、、ということで今回は「2.オンプレミスのアプリケーションを作成・発行する」をお送りします。
実際の流れは下記の通りです。(今回はWindows7上のIIS7.5をアプリケーションサーバとして利用しています)
1.WIFを使ったClaimベースのWebアプリケーションを作成する
2.STSへのRelying Partyの設定
3.動作確認
では、それぞれのステップについて手順を見ていきます。
1.WIFを使ったClaimベースのWebアプリケーションを作成する
ADFS2.0を使ったPassiveFederationを行う場合、アプリケーション(Relying Party)はSSLが有効化されている必要があるため、手順書は省略しますがあらかじめローカルのIISでSSLが使える状態にしてく必要があります。(今回、アプリケーションのデプロイ先をDefault Web Siteにしましたので、あらかじめ作成した自己署名入り証明書をhttpsバインドに設定しました)
では、早速アプリケーションの実装を行います。必要となるのは以下のステップです。
・参照設定の追加
・STS参照の追加
・アプリケーションの実装
・アプリケーションの発行
まずはVisual Studioを管理者として実行します。(STS参照の追加をするためには管理者権限が必要です)

次に新しいプロジェクトを以下の通り作成します。
プロジェクトが起動してきたらソリューションエクスプローラよりWIFへの参照を追加します。追加するコンポーネントはMicrosoft.IdentityModelです。

次にSTSへの参照を追加します。
同じくソリューションエクスプローラからソリューションを右クリックして出てくる「Add STS reference」メニューをクリックします。
※Add STS referenceが出てこない場合は管理者としてVisual Studioを実行してみてください。

Federation Utilityが起動してきますので、以下の通り値を設定します。
STS側でも自己署名入りの証明書を使っているので途中証明書チェーンの確認で警告が出ますが続行してください。

ユーティリティが終了するとソリューションエクスプローラにFederationMetadata.xmlが追加されているのと、Web.configの内容がSTSを参照する形に変更されます。

次はいよいよアプリケーションの実装を行います。
今回はSTSによって発行されるセキュリティトークンからname属性のClaimを取り出して画面上のラベルに表示する、というアプリケーションを実装します。

実装するコードは下記の通りです。Page_load時にトークンからClaimを取り出してClaimTypeがnameならば値を画面上のラベルに表示します。
ここまでくると後はアプリケーションの発行だけです。今回はローカルIIS上にアプリケーションを発行しました。
ここまででアプリケーションの実装・発行は完了です。
2.STSへのRelying Partyの設定
・FederationMetadata.xmlの読み込み
・Claimのマッピングルールの設定
今度はSTS側への設定です。基本的にADFS2.0のSTSはレルム指定をしたホワイトリスト型なので、あらかじめ上記で作成したアプリケーションを指定してRelying Partyを定義しておく必要があります。
ADFS2.0の管理コンソールを開くと、「Required: Add a trusted relying party」というタスクが表示されているので、クリックしてAdd Relying Party Trust Wizardを開始します。

Wizardに設定する項目は下記の通りです。
Wizardが終わると、Claimマッピングのルールエディタが起動しますので、ルールを追加していきます。

Add Ruleボタンをクリックすると、Add Transform Claim Rule Wizardが起動してきますので、下記の通り値を設定します。
これで一応アプリケーションもSTSも準備が整いましたので、最後に動作確認を行います。
3.動作確認
早速アプリケーションにアクセスしてみます。ブラウザから「https://windows7.eidentity.local/onpremise_pasvfed/」にアクセスします。

STSであるadfs20.eidentity.localへリダイレクトされますので、ドメインユーザで認証を受けます。

再度リダイレクトされ、アプリケーションが表示され、claim(name)が正しく取得できていることが分かります。

今回はオンプレミス環境でWIF/ADFS2.0を使ったClaimベースのWebアプリケーションを実装しましたが、次回はいよいよAzure上で同様のアプリケーションを実行してみます。
実際の流れは下記の通りです。(今回はWindows7上のIIS7.5をアプリケーションサーバとして利用しています)
1.WIFを使ったClaimベースのWebアプリケーションを作成する
2.STSへのRelying Partyの設定
3.動作確認
では、それぞれのステップについて手順を見ていきます。
1.WIFを使ったClaimベースのWebアプリケーションを作成する
ADFS2.0を使ったPassiveFederationを行う場合、アプリケーション(Relying Party)はSSLが有効化されている必要があるため、手順書は省略しますがあらかじめローカルのIISでSSLが使える状態にしてく必要があります。(今回、アプリケーションのデプロイ先をDefault Web Siteにしましたので、あらかじめ作成した自己署名入り証明書をhttpsバインドに設定しました)
では、早速アプリケーションの実装を行います。必要となるのは以下のステップです。
・参照設定の追加
・STS参照の追加
・アプリケーションの実装
・アプリケーションの発行
まずはVisual Studioを管理者として実行します。(STS参照の追加をするためには管理者権限が必要です)
次に新しいプロジェクトを以下の通り作成します。
| 項目 | 値 | 備考 |
| プロジェクト名 | onpremise_pasvfed | もちろん任意 |
| プロジェクトの種類 | Visual C# → Web | もちろん言語は任意 |
| テンプレート | ASP.NET Webアプリケーション |
プロジェクトが起動してきたらソリューションエクスプローラよりWIFへの参照を追加します。追加するコンポーネントはMicrosoft.IdentityModelです。
次にSTSへの参照を追加します。
同じくソリューションエクスプローラからソリューションを右クリックして出てくる「Add STS reference」メニューをクリックします。
※Add STS referenceが出てこない場合は管理者としてVisual Studioを実行してみてください。

Federation Utilityが起動してきますので、以下の通り値を設定します。
STS側でも自己署名入りの証明書を使っているので途中証明書チェーンの確認で警告が出ますが続行してください。
| ステップ | 設定項目 | 設定値 | 備考 |
| Welcome | Application configuration location | プロジェクトのweb.configファイル | 初期状態で指定されているので変更不要 |
| Application URI | https://windows7.eidentity.local/onpremise_pasvfed/ | 発行先となるURIを指定 | |
| Security Token Service | Security Token Service (STS) option | Use an existing STS | 既に作成したADFS2.0をSTSとして指定 |
| STS WS-Federation metadata document location | https://adfs20.eidentity.local/FederationMetadata/2007-06/FederationMetadata.xml | ADFS2.0のMetadataのエンドポイントを指定 | |
| STS signing certificate chain validation error | Certificate validation option | Disable certificate chain validation | STSが自己署名入り証明書を使っているため、証明書チェーンの確認を無効化する |
| Security Token encryption | Security Token encryption option | No encryption |
ユーティリティが終了するとソリューションエクスプローラにFederationMetadata.xmlが追加されているのと、Web.configの内容がSTSを参照する形に変更されます。

次はいよいよアプリケーションの実装を行います。
今回はSTSによって発行されるセキュリティトークンからname属性のClaimを取り出して画面上のラベルに表示する、というアプリケーションを実装します。

実装するコードは下記の通りです。Page_load時にトークンからClaimを取り出してClaimTypeがnameならば値を画面上のラベルに表示します。
| using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Microsoft.IdentityModel.Claims; using System.Threading; namespace onpremise_pasvfed { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { IClaimsIdentity caller = (IClaimsIdentity)Thread.CurrentPrincipal.Identity; foreach (Microsoft.IdentityModel.Claims.Claim c in caller.Claims) { if (c.ClaimType == Microsoft.IdentityModel.Claims.ClaimTypes.Name) { lbl_claim_name.Text = c.Value; break; } } } } } |
ここまでくると後はアプリケーションの発行だけです。今回はローカルIIS上にアプリケーションを発行しました。
ここまででアプリケーションの実装・発行は完了です。
2.STSへのRelying Partyの設定
・FederationMetadata.xmlの読み込み
・Claimのマッピングルールの設定
今度はSTS側への設定です。基本的にADFS2.0のSTSはレルム指定をしたホワイトリスト型なので、あらかじめ上記で作成したアプリケーションを指定してRelying Partyを定義しておく必要があります。
ADFS2.0の管理コンソールを開くと、「Required: Add a trusted relying party」というタスクが表示されているので、クリックしてAdd Relying Party Trust Wizardを開始します。
Wizardに設定する項目は下記の通りです。
| ステップ | 設定項目 | 設定値 | 備考 |
| Select Data Source | Select an option that this wizard will use to obtain data about this relying party | Import data about the relying party from a file | |
| Federation metadata file location | アプリケーション側のFederationMetadata.xmlファイル | 必要であれば予めADFSサーバへプロジェクトディレクトリ以下のFederationMetadata.xmlファイルをコピーしておく | |
| Specify Display Name | Display Name | https://windows7.eidentity.local/onpremise_pasvfed/ | |
| Choose Issuance Authorization Rules | Relying party's issuance authorization rule | Permit all users to access this relying party |
Wizardが終わると、Claimマッピングのルールエディタが起動しますので、ルールを追加していきます。

Add Ruleボタンをクリックすると、Add Transform Claim Rule Wizardが起動してきますので、下記の通り値を設定します。
| ステップ | 設定項目 | 設定値 | 備考 |
| Choose Rule Type | Claim rule template | Send LDAP Attribute as Claims | Active Directoryの属性をクレームにマッピングします |
| Configure Claim Rule | Claim rule name | onpremise_pasvfed | 任意です |
| Attribute store | Active Directory | ||
| LDAP Attribute | SAM-Account-Name | ペアでマッピングさせます | |
| Outgoing Claim Type | Name |
これで一応アプリケーションもSTSも準備が整いましたので、最後に動作確認を行います。
3.動作確認
早速アプリケーションにアクセスしてみます。ブラウザから「https://windows7.eidentity.local/onpremise_pasvfed/」にアクセスします。

STSであるadfs20.eidentity.localへリダイレクトされますので、ドメインユーザで認証を受けます。

再度リダイレクトされ、アプリケーションが表示され、claim(name)が正しく取得できていることが分かります。

今回はオンプレミス環境でWIF/ADFS2.0を使ったClaimベースのWebアプリケーションを実装しましたが、次回はいよいよAzure上で同様のアプリケーションを実行してみます。
登録:
投稿 (Atom)





