3/5 ADFS 2.0 を使用して Windows Azure との SSO を実現しよう V1.1

3,846 views
3,660 views

Published on

[構築作業 中編] アプリケーション編
5. クレーム対応アプリとは?
6. クレーム対応アプリの作成と展開 ~ オンプレミス編
- 展開先 IIS の準備
- 開発環境の準備
- アプリケーションの開発
- IIS にアプリを展開

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
3,846
On SlideShare
0
From Embeds
0
Number of Embeds
1,093
Actions
Shares
0
Downloads
96
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide
  • なぜ、フェデレーションとかクレームという考え方が出現したのか…
    アプリケーションの中には独自の認証DBを持つものもあるがここでは除外する。あくまでディレクトリサービスと連携することを前提。
  • アプリ側にはSTSと通信するためのプロトコルが必要。ただしこのプロトコルは非常に簡易的なもの
  • アプリケーションがクレウド上に展開されていても考え方は同じ
  • 3/5 ADFS 2.0 を使用して Windows Azure との SSO を実現しよう V1.1

    1. 1. 1 クレーム対応アプリケーションとはクレーム対応アプリケーションとは
    2. 2. 2 「認証の分離」とその限界 アプリケーションアプリケーションアプリケーションアプリケーション アプリケーションアプリケーションアプリケーションアプリケーション こ れ ま で の 方 式 こ れ ま で の 方 式 …多くのアプリケーションが「認証」を分離してきたが
    3. 3. 3 「認証分離」の限界 • 認証プロトコルの違い • Identity 管理ポリシーの違い • アプリケーション側の対応 • Single Sign-On/Off への適用 Active Directory プ ロ ト コ ル アプリ 1 プ ロ ト コ ル 情 報 の 整 形 OpenLDAP プ ロ ト コ ル 情 報 の 解 釈 アプリ 2 プ ロ ト コ ル 情 報 の 解 釈 強い絆強い絆 強い絆強い絆 強い絆 強い絆強い絆 強い絆 情 報 の 整 形 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報
    4. 4. 4 解決への考察 • フェデレーション信頼による素結合 • STS によりアプリケーション側の処理を削減 • 情報はセキュリティトークンに格納して受け渡し STSSTSSTSSTS STSSTSSTSSTS Active Directory プ ロ ト コ ル アプリ 1 プ ロ ト コ ル 情 報 の 整 形 OpenLDAP プ ロ ト コ ル 情 報 の 解 釈 アプリ 2 プ ロ ト コ ル 情 報 の 整 形 情 報 の 解 釈 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報 情 報 プ ロ ト コ ル プ ロ ト コ ル プ ロ ト コ ル プ ロ ト コ ル フェデレーション信頼
    5. 5. 5 WIFWIFAD FS 2.0AD FS 2.0 AD FS 2.0 と WIF の役割 STSSTS STSSTS Active Directory プ ロ ト コ ル アプリ 1 プ ロ ト コ ル 情 報 の 整 形 情 報 の 解 釈 情 報 情 報 情 報 情 報 情 報 情 報 プ ロ ト コ ル プ ロ ト コ ル 信頼 • AD FS 2.0 がユーザーのロールを管理 • アプリケーションは受け取ったロールを解釈するだけ WIF : Windows Identity Foundation
    6. 6. 6 認証 / ロール管理からの分離 アプリケーションアプリケーションアプリケーションアプリケーション アプリケーションアプリケーションアプリケーションアプリケーション アプリケーションアプリケーションアプリケーションアプリケーション こ れ ま で の 方 式 こ れ ま で の 方 式 ク レー ム に 対 応 ク レー ム に 対 応
    7. 7. 7 ブラウザー WIF アプリケーションの構造 • WIF (Windows Identity Foundation) を使用して セキュリティー トークンからクレームを取り出す • WIF は WS-Federation/WS-Trust をサポート ASP.NET Windows Identity Foundation .NET Framework 4 ト ー ク ン AD FS 2.0 クレームの評価 ロール判定 各種処理 ロールは既にトークンに セットされているので 評価するだけで OK
    8. 8. 8 クレームの構造と識別方法 Claims Claim ClaimType Value Issuer OriginalIssuer ValueType これらの値で クレームを識別する subject Claim Claim Claim Microsoft.IdentityModel.Claims http://msdn.microsoft.com/ja-jp/library/microsoft.identitymodel.claims.aspx
    9. 9. 9 サポートされているプロトコルとトークン形式 • パッシブ SAML WebSSO – SAML 2.0 トークン • パッシブ WS-Federation – SAML 1.1 トークン • アクティブ WS-Trust (CardSpace 対応含む ) – SAML 2.0 トークン – SAML 1.1 トークン AD FS 2.0 WIF
    10. 10. 10 クレーム対応アプリケーションの作成と展クレーム対応アプリケーションの作成と展 開開 ~ オンプレミス 編~ オンプレミス 編 まずは オンプレミスのまずは オンプレミスの IISIIS に展開してみるに展開してみる 1. 展開先サーバーの準備 2. 開発環境の準備 3. アプリケーションの開発 4. AD FS 2.0 との信頼関係確立 5. アプリケーションの展開
    11. 11. 11 実施手順 1. 展開先サーバーの準備 a. アプリケーション展開先の IIS をセットアップ a. IIS インストール b. WIF ランタイム c. WIF SDK b. 自己署名証明書の作成 c. SSL を有効にする d. アプリケーションプールを作成 2. 開発環境の準備 a. Visual Studio のインストール b. Windows Identity Framework ランタイム のインストール c. Windows Identity Framework SDK のインストール d. WIF 対応アプリケーション用テンプレートを複製 3. アプリケーションの開発 a. Visual Studio 起動 b. “Claims-Aware ASP.NET” テンプレートを選択 c. AD FS 2.0 との信頼関係を確立 a. アプリケーション側の作業 d. コーディング 4. アプリケーションの展開 a. IIS にアプリケーションを発行 b. AD FS 2.0 との信頼関係を確立 a. AD FS 2.0 側の作業 済 済 済 済
    12. 12. 12 展開先サーバーの準備 クレーム対応アプリケーションの作成と展開~ オンプレミス 編
    13. 13. 13 展開先サーバーの準備 ~ 自己署名証明書の作成
    14. 14. 14 展開先サーバーの準備 ~ SSL を有効にする
    15. 15. 15 展開先サーバーの準備 ~ アプリケーションプールの作成
    16. 16. 16 開発環境の準備 クレーム対応アプリケーションの作成と展開~ オンプレミス 編
    17. 17. 17 事前にインストールしておくもの Windows 7 + Visual Studio 2010 の場合 •Windows Azure Tools for Microsoft Visual Studio 1.2 ( 2010 年 6 月) – VSCloudService.exe – VSCloudService.VS100.ja-jp.msi (言語パック) ※Windows Azure SDK 1.2 も一緒にインストールされます •Windows Identity Foundation 3.5 ランタイム 日本語版( KB974495 ) – Windows6.1-KB974405-x64j.msu •Windows Identity Foundation 3.5 日本語版 – WindowsIdentityFoundation-SDK-3.5.msi •Windows Identity Foundation 4.0 英語版 – WindowsIdentityFoundation-SDK-4.0.msi •Microsoft CAPICOM 2.1.0.2 SDK ※ 自己署名証明書を作成する場合に必要
    18. 18. 18 < マイドキュメント >Visual Studio 2010TemplatesProject TemplatesVisual C# %Program Files(x86)%Windows Identity Foundation SDKv4.0Visual Studio Extensions10.0 ├ csClaimsAwareASPNETSite.zip ├ csClaimsAwareWCFSite.zip ├ csSTSASPNETSite.zip └ csSTSWCFSite.zip コピー WIF を使用するための テンプレートが追加され る WIF 対応アプリケーション用テンプレートを複製
    19. 19. 19 アプリケーションの開発 クレーム対応アプリケーションの作成と展開~ オンプレミス 編
    20. 20. 20 管理者として VS を実行 OR
    21. 21. 21 “Claims-Aware ASP.NET” テンプレートを選択 [ ファイル ]-[ 新規作成 ]-[Web サイト ] [Visual C#] を選択 IIS 7.5 では FPSE が使えない ので とりあえずローカルに作成 あとで IIS に発行する IIS 7.5 では FPSE が使えない ので とりあえずローカルに作成 あとで IIS に発行する
    22. 22. 22 Claims-Aware ASP.NET テンプレート の外観
    23. 23. 23 Claims-Aware ASP.NET テンプレートの Web.config (抜粋) <add name="ClaimsPrincipalHttpModule" type="Microsoft.IdentityModel.Web.ClaimsPrincipalHttpMo dule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler“ />
    24. 24. 24 Claims-Aware ASP.NET テンプレートの default.aspx.cs (抜粋) IClaimsPrincipal claimsPrincipal = Page.User as IClaimsPrincipal; IClaimsIdentity claimsIdentity = ( IClaimsIdentity )claimsPrincipal.Identity; (略) foreach ( Claim claim in claimsIdentity.Claims ) { newRow = new TableRow(); newClaimTypeCell = new TableCell(); newClaimTypeCell.Text = claim.ClaimType; newClaimValueCell = new TableCell(); newClaimValueCell.Text = claim.Value; newRow.Cells.Add(newClaimTypeCell); newRow.Cells.Add(newClaimValueCell); claimsTable.Rows.Add(newRow); } 今回はこのコードを そのまま使います
    25. 25. 25 customErrors mode= 0ff”“ デバッグしやすいように以下の対応をしておきましょう
    26. 26. 26 AD FS 2.0 との信頼関係確立 クレーム対応アプリケーションの作成と展開~ オンプレミス 編
    27. 27. 27 RP/SPRP/SPIdP/CPIdP/CP AD FS 2.0 との信頼関係について 信頼信頼 MetadataMetadataMetadataMetadata URIURI URIURI 精神的には IdP 側 の Identity/Role 管理責任を信頼 RP 側の クレーム管理責任を信頼 物理的には メタデータ / 証明書 / 暗号化キーを事前に交換 お互いの「すり替わり」を防止 データの横取りを防止 「信頼」とは何か?
    28. 28. 28 「アプリケーション側」の設定 ① プロジェクトを右クリック - [STS 参照の追加 ] 「 AD FS 2.0 のメ タデータを取り 込む」 「 AD FS 2.0 のメ タデータを取り 込む」
    29. 29. 29 「アプリケーション側」の設定 ② 展開後のアプリケーションの URL 展開後のアプリケーションの URL フェデレーションユーティリティ が起動する
    30. 30. 30 「アプリケーション側」の設定 ③ 「既存の STS を使う」に AD FS 2.0 のメタデータを指定する 「 https://tfadfs.tf.com/ 」まで入力して クリックすると自動的に補完 「 https://tfadfs.tf.com/ 」まで入力して クリックすると自動的に補完 指定するのは NLB クラスターのホスト名 https://tfadfs.tf.com/ ~
    31. 31. 31 「アプリケーション側」の設定 ④ 今回は自己発行証明 書なので「チェック しない」
    32. 32. 32 「アプリケーション側」の設定 ⑤ IIS の SSL 証明書が使われ る
    33. 33. 33 「アプリケーション側」の設定 ⑥ AD FS 2.0 のメタデータに記載されている、「必須な」「使用可能な」 クレームタイプの一覧が表示される AD FS 2.0 で用意された FederationMetadata.xml (抜粋) AD FS 側の都合で変更 される可能性がある
    34. 34. 34 「アプリケーション側」の設定 ⑦ AD FS 2.0 のメタデー タを定期的に取り込む かどうかを指定する
    35. 35. 35 「アプリケーション側」の設定 ⑧ STS 参照追加後のプロジェクト アプリ自身のメタデータが生成さ れる AD FS 2.0 側に取り込む必要がある ※ AD FS 2.0 のメタデータではない アプリ自身のメタデータが生成さ れる AD FS 2.0 側に取り込む必要がある ※ AD FS 2.0 のメタデータではない 取り込んだ AD FS 2.0 用メタデータ をもとに、 AD FS 2.0 と通信し認証 / 承認 するた めの定義が大量に追記されている 取り込んだ AD FS 2.0 用メタデータ をもとに、 AD FS 2.0 と通信し認証 / 承認 するた めの定義が大量に追記されている
    36. 36. 36 IIS にアプリケーションを展開 クレーム対応アプリケーションの作成と展開~ オンプレミス 編
    37. 37. 37 IIS にアプリケーションを発行 ① (注意) この操作ではファイルがコピーされるだけ。 別途 IIS 上でアプリケーションの設定が必要
    38. 38. 38 IIS にアプリケーションを発行 ② ( IIS 側での操 作)発行したファイルをアプリケーションに変換する Visual Studio から複製 したファイル群 Visual Studio から複製 したファイル群
    39. 39. 39 IIS にアプリケーションを発行 ③ 事前に作成しておいたアプリ ケーションプールを選択する 事前に作成しておいたアプリ ケーションプールを選択する アイコンに注目アイコンに注目
    40. 40. 40 アプリとの信頼関係の確立( AD FS 2.0 側) ① 証明書利用者信頼( RP/SP )の登録 [AD FS 2.0 管理コンソール ] - [AD FS 2.0] - [ 信頼関係 ] - [ 証明書利用者信頼 ] を右クリックして [ 証明書利用者信頼の追加 ] を選択
    41. 41. 41 アプリとの信頼関係の確立( AD FS 2.0 側) ② 発行したアプリケーションの FederationMetadata.xml ファイルのフルパスを 指定する 発行したアプリケーションの FederationMetadata.xml ファイルのフルパスを 指定する
    42. 42. 42 アプリとの信頼関係の確立( AD FS 2.0 側) ③ ホストしているサーバー名とアプリケー ション名が分かるようにしてあると吉 ホストしているサーバー名とアプリケー ション名が分かるようにしてあると吉 「発行承認規則」(後述)の初期 値。 最初は制限を付けないほうが良い 。 「発行承認規則」(後述)の初期 値。 最初は制限を付けないほうが良い 。
    43. 43. 43 アプリとの信頼関係の確立( AD FS 2.0 側) ④
    44. 44. 44 実行してみる AD FS 2.0 側ではクレームの定義を何もしていないため、 既定のクレームのみが表示されている •認証メソッド •認証日時 AD FS 2.0 側ではクレームの定義を何もしていないため、 既定のクレームのみが表示されている •認証メソッド •認証日時
    45. 45. 45 エラーが出たら ① HTTP エラー 500.21 - Internal Server Error ハンドラ "PageHandlerFactory-Integrated" のモジュール リストにあるモジュール "ManagedPipelineHandler" が 正しくありません。 可能性のある原因 : ASP.NET がインストールされていないか、完全にインストールされていません。 構成に誤字があります。 不適切な必須条件評価が存在します。 HTTP エラー 500.21 - Internal Server Error ハンドラ "PageHandlerFactory-Integrated" のモジュール リストにあるモジュール "ManagedPipelineHandler" が 正しくありません。 可能性のある原因 : ASP.NET がインストールされていないか、完全にインストールされていません。 構成に誤字があります。 不適切な必須条件評価が存在します。 不明な属性です <compilation debug="true" targetFramework="4.0"> <assemblies> </assemblies> </compilation> 不明な属性です <compilation debug="true" targetFramework="4.0"> <assemblies> </assemblies> </compilation> C:windowsMicrosoft.NETFrameworkv4.0.30319aspnet_regiis.exe -iC:windowsMicrosoft.NETFrameworkv4.0.30319aspnet_regiis.exe -i 対処法: ASP.NET 4.0 を登録する C:windowsMicrosoft.NETFrameworkv4.0.30319aspnet_regiis.exe -iC:windowsMicrosoft.NETFrameworkv4.0.30319aspnet_regiis.exe -i x86 x64
    46. 46. 46 エラーが出たら ② 対処法:作成したアプリケーションのアプリケーションプールの設定を変更する TRUE に設定TRUE に設定

    ×