Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,107 views

Published on

7.クレーム対応アプリの作成と展開 ~クラウド編
- Windows Azure の準備
- アプリケーションの開発
- Windows Azure にアプリケーションを展開

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. 1 クレーム対応アプリケーションの作成とクレーム対応アプリケーションの作成と 展開展開 ~ クラウド 編~ クラウド 編 いままでの知識を総動員 1. Windows Azure の準備 2. Windows Azure 用アプリケーションの作成 3. Windows Azure に展開 4. AD FS 2.0 に登録
  2. 2. 2 クレーム対応アプリケーションの作成と展開~ クラウド 編 WINDOWS AZURE の準備 1. サービスの新規作成 2. 自己署名証明書の準備 3. 証明書の登録
  3. 3. 3 サービスの新規作成~ サービスの新規作成
  4. 4. 4 サービスの新規作成 ~ 作成するサービスの選択 今回は「 Hosted Services 」を選択
  5. 5. 5 サービスの新規作成 ~ Service Label を指定 サービスの識別名です。わかりやすい名前にしましょう。
  6. 6. 6 サービスの新規作成 ~ 公開 URL とデータセンターを指定 http:// .cloudapp.net/■ ■ ■ ■ ■ ■
  7. 7. 7 サービスの新規作成 ~ サービスの初期状態
  8. 8. 8 自己署名証明書の準備 ~ Windows Azure で使用する証明書とは • サブスクリプション証明書( .cer ) – サービス管理 API ( SMAPI )へのアクセスに使用 – X.509 V3 ( .CER )に対応し、最低 2048 bit キー を持っている • サービス証明書( .pfx ) – サービスへの SSL 通信に使用 – thumbprint によってアプリケーションと対応付け 参考 http://blogs.technet.com/b/junichia/archive/2010/09/02/3353275.aspx いずれも自己署名証明書を利用可能
  9. 9. 9 Hosted ServiceHosted Service Storage AccountStorage Account TenantTenant Subscription (参考) Windows Azure へのアクセス経路 Windows LiveID Service Management Portal Service Management API(SMAPI) Admin Storage Node Compute Node Controller Controller Role Instance LoadBalancer End User blob table queue • Upload Application • Manage 証 明 書 SAK Drives FabricFabric
  10. 10. 10 (参考) SSL 通信と証明書管理 SMAPI FabricFabric Storage NodeCompute Node Controller Controller SAK GuestGuest Hypervisor 発行 RESTREST SSL 格納 RootRoot GA FA FA PKCS12PKCS12 Microsoft CA SSL 発行 内部通信に使用される 外部ー FC との通信に使用 SSL
  11. 11. 11 自己署名証明書の準備~ [FAQ] 証明書の主体について Windows Azure 上に展開されるアプリケーションの FQDN …は xxxxxxxx.cloudapp.net …マイクロソフト所有のドメイン …ということは xxxxxxxx.cloudapp.net で 証明書を取得することはできない CNAME を使用して証明書を取得する必要がある ※ 今回は自己署名証明書を使用します http://blogs.technet.com/b/junichia/archive/2010/09/03/3353536.aspx
  12. 12. 12 自己署名証明書の準備 ~ 証明書の登録場所 サブスクリプション サービス tf.cloudapp.net サービス tf.cloudapp.net サブスクリプション 証明書( .cer ) サービス証明書 ( .pfx ) サービス xxxx.cloudapp.net サービス xxxx.cloudapp.net サービス yyyy.cloudapp.net サービス yyyy.cloudapp.net アカウントアカウント import import
  13. 13. 13 自己署名証明書の準備~ 自己署名証明書の作成 1. Visual Studio をインストールしたマシンにログオン 2. [ スタート ]-[ すべてのプログラム ]-[Microsoft Visual Studio 2010]-[Visual Studio Tools]-[Visual Studio コマンドプロンプト ] を起動 3. 証明書( .cer )ファイルとプライベートキーファイル( .pvk )ファイルを作成 4. .pvk と .cer から .pfx ファイルを作成する 5. .cer と .pfx ファイルを Windows Azure にインポートする pvk2pfx -pvk "sydneytest.cloudapp.net.pvk“ -spc “tf01.cloudapp.net.cer“ -pfx “tf01.cloudapp.net.pfx“ -pi < パスワード > makecert -r -pe -n "CN=tf01.cloudapp.net" -sky exchange “tf01.cloudapp.net.cer" -sv “tf01.cloudapp.net.pvk"
  14. 14. 14 証明書の登録~ サブスクリプション証明書の登録( .cer )
  15. 15. 15 証明書の登録~ サービス証明書の登録( .pfx )
  16. 16. 16 クレーム対応アプリケーションの作成と展開~ クラウド 編 WINDOWS AZURE 用アプリケーションの作 成
  17. 17. 17 アプリケーションの開発 ~ テンプレートの選択
  18. 18. 18 アプリケーションの開発 ~ ロールの指定 ワーカーロールと Web ロールの違いについての詳細は以下を参照 Windows Azure Platform の概要 http://technet.microsoft.com/ja-jp/cloud/gg236628.aspx
  19. 19. 19 アプリケーションの開発 ~ Windows Identity Foundation への参照追加 .NET から Microsoft.IdentityModel を追加する
  20. 20. 20 アプリケーションの開発 ~ Microsoft.IdentityModel モジュールの複製設定 Windows Azure で用意されている Windows Server には WIF がインストールされてい ない。 そこで、 Microsoft.IdentityModel を Azure 上でも使用できるよう、パッケージの中に組 み込んでおく必要がある。 パッケージ Microsoft.IdentityModelMicrosoft.IdentityModel 一緒にアップロード一緒にアップロード
  21. 21. 21 アプリケーションの開発 ~ SSL の設定 ① SSL を使用する場合には、サービス証明書へのポインター( Thumprint )を設 定しておく必要がある thumbprintthumbprint
  22. 22. 22 アプリケーションの開発 ~ SSL の設定 ②
  23. 23. 23 アプリケーションの開発 ~ SSL の設定 ③ 識別名なので 何でもよい 識別名なので 何でもよい サービス証明 書の Thumbprint サービス証明 書の Thumbprint 証明書の識別名証明書の識別名 このままこのまま
  24. 24. 24 アプリケーションの開発~ STS 参照の追加 ① 自分自身の公開後の URL を指定する
  25. 25. 25 アプリケーションの開発~ STS 参照の追加 ② オンプレミスの場合 と同じ
  26. 26. 26 アプリケーションの開発~ STS 参照の追加 ③
  27. 27. 27 アプリケーションの開発~ Web.config の編集 ① サービス証明書の Thumbprint を追記する <serviceCertificate> <certificateReference x509FindType="FindByThumbprint" findValue=“<THUMBPRINT>"/> </serviceCertificate>
  28. 28. 28 アプリケーションの開発~ Web.config の編集 ② <configuration><system.web> に以下を追記 •<customErrors mode= off” />“ •<httpRuntime requestValidiationMode= 2.0” />“
  29. 29. 29 アプリケーションの開発~ ちょっとだけコーディング(?)① 今回は、オンプレミスに展開したアプリケーションのコードを流用 • Default.aspx のソースの修正 <%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs” Inherits=“WebRole1._Default” validateRequest="false" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> (略) </html> <%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs” Inherits=“WebRole1._Default” validateRequest="false" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> (略) </html> Claims-Aware ASP.NET テンプレートで提供されている Default.aspx のコード部を、作成中 の Default.aspx に上書きでコピペして、以下の通り修正 ちょっとだけ修 正 ちょっとだけ修 正
  30. 30. 30 アプリケーションの開発~ ちょっとだけコーディング(?)② • Default.aspx.cs のソースを「注意しながら」修正 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { (略) } } using Microsoft.IdentityModel.Claims; namespace WebRole1 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } } } using Microsoft.IdentityModel.Claims; namespace WebRole1 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } } } 挿 入 追記 Claims-Aware ASP.NET テ ンプレートのソース Claims-Aware ASP.NET テ ンプレートのソース
  31. 31. 31 アプリケーションの発行方法 直接発行直接発行 2 通りの発行方法 •Visual Studio から直接発行する •パッケージファイルを保存して、ポータルサイトからアップする .cspkg .cscfg Windows Azure Portal サ ー ビ ス パ ッ ケ ー ジ を 作 成 サ ー ビ ス パ ッ ケ ー ジ を 作 成 アップロー ド アップロー ド deploydeploy ここまでは 開発者の仕事 展開するのは ITPRO の仕 事 今回はこちらの 方法を使用する 今回はこちらの 方法を使用する
  32. 32. 32 アプリケーションの開発~ サービスパッケージを作成 IIS への発行とは少し異なります インフラ担当者は、今後パッケージの展 開を依頼されることがあるはずです その場合にはこの方法を使用します。
  33. 33. 33 アプリケーションの開発~ サービスパッケージをアップロード .cspkg を指 定 .cspkg を指 定 .cscfg を指定.cscfg を指定
  34. 34. 34 Deploy が完了するまで 15 分~ 20 分 約 15 分 後 約 15 分 後
  35. 35. 35 約 5 分 後 約 5 分 後
  36. 36. 36 メタデータへの接続を確認 https://tf01.cloudapp.net/FederationMetadata/2007-06/FederationMetadata.xml アップロードが完了してステータスが「 Ready 」になったら、以下に接続して 表示されることを確認してみましょう。
  37. 37. 37 AD FS 2.0 への登録 ① 今度は Windows Azure に展開したアプリケー ションを、 AD FS 2.0 に登録します。 前ページのメタ データ の URL を指定する 前ページのメタ データ の URL を指定する
  38. 38. 38 AD FS 2.0 への登録 ② 見分けがつきやす い表示名を指定す る 見分けがつきやす い表示名を指定す る
  39. 39. 39 AD FS 2.0 への登録 ③
  40. 40. 40 実行テスト https://tf01.cloudapp.net/
  41. 41. 41 WIF アプリケーションと SSO の仕組み オンプレミ ス クラウド AD DS AD FS 2.0 信 頼 信 頼 1 2 3 4 クラウド上に Identity 情報を用意せずに、 クレームによるアクセス承認が可能 WIF 5 6 7 8 WIF : Windows Identity Foundation
  42. 42. 42 WS-Federation (Passive SSO) の流れ 1. オンプレミスの AD DS にログオン依頼 2. AD DS からクレデンシャルが送信されクライアントに保存 ------------ 3. Windows Azure 上のアプリケーションにアクセス 4. クレーム ポリシーをアプリケーションから受け取り、 STS (AD FS 2.0) にリダイレクト 5. 属性ストアである AD DS からクレームを収集 6. 集めたクレームに署名をしてセキュリティトークンを生成 し、 Windows Azure アプリケーションに送信 7. アプリケーションはセキュリティトークンを受け取 り、 Windows Identity Foundation (WIF) を使用してクレームを 取り出し、評価する 8. 画面がブラウザーに送られる

×