Mais conteúdo relacionado Semelhante a AppFabric ACS V2 による SSO (20) Mais de junichi anno (20) AppFabric ACS V2 による SSO1. Windows Azure Platform シングルサインオン シリーズ その2 Windows Azure AppFabricAccess Control Service V2によるシングル サインオン システムの構築 第1.0版 2011年3月11日 日本マイクロソフト株式会社 エバンジェリスト 安納 順一 http://blogs.technet.com/junichia/ Twitter @junichia 2. 本日の予定 13:30 - 16:30 「Windows Azure AppFabric ACS V2で構築する シングルサインオンシステム」マイクロソフト 安納 順一 16:45 - 17:30「「ID 管理?あ~認証の話ね」という人に向けた話」 MVP 富士榮 尚寛 氏 17:30 - 18:00 ライトニングトーク 18:00 - 19:00 懇親会 5. 本日のテーマと内容 ハイブリッドクラウドを支えるテクノロジーの1つ、AppFabric Access Control Service の用途と操作方法について理解しましょう Windows Azure AppFabric ACS V2(プレビュー版)を使用して、Windows Azure 上に展開した アプリケーション への シングルサインオン を構成します。 AppFabric ACS の役割を理解する クレームを認識するアプリケーションの作成 アプリケーションをWindowsAzure 上に展開 AppFabricACSV2 のセットアップおよび環境設定 長丁場ですが、根性でのりきりましょう! 21. Secure Cloud Federation クラウド オンプレミス データ同期 ~ SQL Azure Data Sync ~ アプリケーション間通信 ~ AppFabric Service Bus ~ 今日のテーマ セキュリティ ~ AD FS 2.0 & AppFabric ACS ~ 仮想ネットワーク ~ Windows Azure Connect ~ 24. 予測される ID 管理の問題点 見えない利用者の Identity 管理/認証/承認 異なる認証方式の相互運用 ディレクトリサービスの設置が困難 クレームベース セキュリティ フェデレーション セキュリティ モデル 42. セキュリティ トークン パッケージ化されたクレーム 発行者の署名によって信頼性を担保 発行元の STS ( Security Token Service ) が生成する セキュリティトークン クレーム 1 クレーム 2 クレーム n クレームの 発行元による 署名 50. 選択肢はさまざまあるけど。。。 SQL Azure にユーザー DB を作成する Anonymous アクセス 同期 WELCOME! 同期 同期 メタデータ Windows Azure Connect を使用 AD FS 2.0 を使用する Active Directory Domain 60. Windows Azure AppFabricAccess ControlServiceV1の用途 RESTWEB サービスに「アクセス制御」を実装する (例)道路の混雑状況を提供するサービス 問合せ 問合せ 返答 返答 誰でもアクセスできてしまう ユーザー アプリ ユーザー アプリ 61. Windows Azure AppFabricAccess ControlServiceV1の用途 アプリケーションに認証機能を実装することなく、アクセス制御を実現 Relying Party (例)道路の混雑状況を提供するサービス 信頼 AppFabric STS Access Control Service REST ③ トークン ②トークン ① 認証 ④ 結果 セキュリティ キー or SAML 1.1/2.0トークン or SWT ユーザー アプリ ※ごめんなさい、お手元の資料と ちょっとだけ絵がかわっています 62. ACSV1 を 企業内 AD との SSO に使用する ACS では Passive SSO がサポートされていないことに注意 9 信頼 ACS WRAP REST Service 5 WS-Trust クラウド 信頼 8 オンプレミス 6 4 10 AD DS AD FS2.0 1 7 2 3 クライアント アプリケーション 63. 処理の流れ クライアント アプリケーションが AD FS 2.0 にトークン発行を依頼 AD DS からクレームを収集 AD FS 2.0 から SAML 1.1 トークン発行 トークンを ACS に送信 ACS は受け取った SAML 1.1 トークンをルールに沿って検証 SWT を生成し、クライアントに発行 クライアント アプリケーションは受け取った SWT を分解し、正しい ACS から発行されたものか等を検証 問題なければ HTTPAuthorization ヘッダーに SWT を埋め込み、REST サービスにPOST REST サービスは受け取った SWT を分解してロールを検証 ロールが正しければサービスを実行 64. AppFabric ACSV2 の構造 独自プログラム ManagementPortal AppFabric ACSManagementService Windows AzureAppFabric ACS 本体 リライング パーティ クレーム プロバイダー Protocol クレーム変換 エンジン Protocol WS-Federation WS-Federation AD FS 2.0 ブラウザーベースアプリ (Passive) SAML/SWT WS-Fed対応STS クレームルール google WEBサイト Yahoo! SAML/SWT OAuth 2.0 Facebook SAML/SWT OpenID 2.0 OpenID SAML/SWT Live ID Windows LiveID サービス/リッチクライアント (Active) SOAPWeb サービス WS-Trust WS-Trustアプリ WS-Trust SAML/SWT SWT REST Web サービス OAuth/ WRAP 2.0 SWT OAuth/ WRAP 2.0 SWT対応アプリ 66. これから構築する環境 複数の IdP からの認証結果を受け入れる SSO システム AppFabric ACSV2 Web アプリケーション 信頼 信頼 信頼 信頼 AD FS 2.0 は今回は除外 70. Namespace の作成 ③ Windows AzureAppFabric にサブスクライブしていない場合は「LabsSubscription」がサブスクリプション名となる Namespace を指定する。ここで指定した名前が AppFabric ACS の WEBサイト名になる。 https://acstestsite.accesscontrol.appfabriclabs.com/ 「Active」になったら使用可能 72. AppFabricACS 管理サイト ※この画面は正式版で変わる可能性が大きいので簡単に。。。 Azureアプリケーションの登録 主に使用するメニュー Identity Provider の登録 クレームルールの登録 セキュリティトークンの署名、暗号化のための証明書の登録 ACS から Active にセキュリティトークンを発行する場合に使用するユーザーIDを管理 管理ポータルにアクセスすることができるユーザーIDを設定 独自プログラムからの AppFabricACS 管理サービスへのアクセスを 許可するユーザーIDを登録する カスタムログオン画面やエンドポイントのURLを確認する画面 80. 自己署名証明書の準備 ~Windows Azure で使用する証明書とは 参考 http://blogs.technet.com/b/junichia/archive/2010/09/02/3353275.aspx サブスクリプション証明書(.cer) サービス管理 API(SMAPI)へのアクセスに使用 X.509 V3(.CER)に対応し、最低 2048 bit キー を持っている サービス証明書(.pfx) サービスへの SSL 通信に使用 thumbprint によってアプリケーションと対応付け いずれも自己署名証明書を利用可能 81. (参考)SSL 通信と証明書管理 SSL 発行 SMAPI REST Storage Node Compute Node Guest Root SAK SSL 格納 FA FA GA SSL Hypervisor Fabric Controller Controller PKCS12 PKCS12 発行 内部通信に使用される 外部ーFCとの通信に使用 Microsoft CA 83. 自己署名証明書の準備 ~証明書の登録場所 サブスクリプション サブスクリプション 証明書(.cer) アカウント import サービス tf20110311.cloudapp.net サービス証明書 (.pfx) import サービス xxxx.cloudapp.net サービス証明書 (.pfx) import サービス yyyy.cloudapp.net サービス証明書 (.pfx) import 86. 自己署名証明書の準備~自己署名証明書の作成 Visual Studio をインストールしたマシンにログオン [スタート]-[すべてのプログラム]-[Microsoft Visual Studio 2010]-[Visual Studio Tools]-[Visual Studio コマンドプロンプト] を起動 証明書(.cer)ファイルとプライベートキーファイル( .pvk)ファイルを作成 .pvkと .cerから .pfx ファイルを作成する .cerと .pfxファイルを Windows Azure にインポートする makecert -r -pe -n "CN=tf20110311.cloudapp.net" -sky exchange “tf20110311.cloudapp.net.cer" -sv“tf20110311.cloudapp.net.pvk" pvk2pfx -pvk"tf20110311.cloudapp.net.pvk“ -spc“tf20110311.cloudapp.net.cer“ -pfx“tf20110311.cloudapp.net.pfx“ -pi <パスワード> 101. Windows Azure 用クレーム対応アプリケーションの作成WIF アプリケーションの構造 WIF (Windows Identity Foundation) を使用してセキュリティー トークンからクレームを取り出す WIF は WS-Federation/WS-Trustをサポート ロールは既にトークンにセットされているので評価するだけでOK ASP.NET AppFabric ACS クレームの評価 ロール判定 トークン Windows Identity Foundation 各種処理 .NET Framework 4 ブラウザー 102. Windows Azure 用クレーム対応アプリケーションの作成クレームの構造と識別方法 Microsoft.IdentityModel.Claims http://msdn.microsoft.com/ja-jp/library/microsoft.identitymodel.claims.aspx これらの値で クレームを識別する Claims ClaimType Claim Value Claim Claim Issuer Claim OriginalIssuer ValueType subject 103. Windows Azure 用クレーム対応アプリケーションの作成事前にインストールしておくもの Windows 7 + Visual Studio 2010 の場合 WindowsAzure Tools for Microsoft Visual Studio 1.4(2011年3月) VSCloudService.exe VSCloudService.VS100.ja-jp.msi (言語パック) ※Windows Azure SDK1.4 も一緒にインストールされます 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※自己署名証明書を作成する場合に必要 121. namespace WebRole1 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { IClaimsPrincipalclaimsPrincipal = Page.User as IClaimsPrincipal; IClaimsIdentityclaimsIdentity = (IClaimsIdentity)claimsPrincipal.Identity; // The code below shows claims found in the IClaimsIdentity. // TODO: Change code below to do your processing using claims. Table claimsTable = new Table(); TableRowheaderRow = new TableRow(); TableCellclaimTypeCell = new TableCell(); claimTypeCell.Text = "Claim Type"; claimTypeCell.BorderStyle = BorderStyle.Solid; TableCellclaimValueCell = new TableCell(); claimValueCell.Text = "Claim Value"; claimValueCell.BorderStyle = BorderStyle.Solid; つづく 122. headerRow.Cells.Add(claimTypeCell); headerRow.Cells.Add(claimValueCell); claimsTable.Rows.Add(headerRow); TableRownewRow; TableCellnewClaimTypeCell, newClaimValueCell; 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); } this.Controls.Add(claimsTable); } } } 133. Windows Azure に展開メタデータへの接続を確認 アップロードが完了してステータスが「Ready」になったら、以下に接続して表示されることを確認してみましょう。 https://tf20110311.cloudapp.net/FederationMetadata/2007-06/FederationMetadata.xml 137. Webアプリケーションを AppFabricACS に登録するWEBアプリケーションの登録 ③ セキュリティトークンのフォーマット(SAML2.0/SAML1.1/SWT) セキュリティトークンを暗号化するかどうか セキュリティトークンの有効期間(秒) Azure アプリケーションと関連付ける Identity Provider。 「Identity Providers」メニューで登録した IdP が表示される。規定では「Windows LiveID」のみ。 適用するクレーム変換ルール。複数のアプリケーションで1つのルールを共有することも可能。1つのアプリケーションが複数のルールを使用することも可能。 トークンの署名に使用する証明書ファイル 規定は「規定の証明書」 138. Webアプリケーションを AppFabricACS に登録するセキュリティトークンの署名と暗号化について AppFabric ACS V2 IdP RP 信頼 信頼 metadata metadata metadata metadata トークンフォーマット 署名 署名 複合化 暗号化 暗号化 複合化 SAML 2.0 SAML 2.0 X.509 Private Key X.509 Public Key X.509 Public Key X.509 .cer X.509 (.cer) SAML 2.0 X.509 Private Key SAML 1.1 SAML 1.1 X.509 (.cer) SAML 1.1 X.509 .cer X.509 Private Key X.509 Public Key X.509 Public Key X.509 Private Key SWT SWT SWT 256-bit symmetric signing key 256-bit symmetric signing key 144. Identity Provider との連携 ~ AD FS 2.0複数の AD FS 2.0 を登録可能 企業ごとにクレーム変換ルールを設定することができる (例)企業国籍別、企業文化別など AD FS 2.0 AppFabric ACS V2 部長 クレーム発行 国内企業A 管理職 クレーム変換 ロール決定 AD FS 2.0 管理職 クレーム変換 主席部長 クレーム発行 ロール決定 管理職 クレーム変換 ロール決定 国内企業B 日本語に変換 クレーム発行 AD FS 2.0 Manager 海外企業C 145. Identity Provider との連携 ~ AD FS 2.0AppFabric ACS V2 と AD FS2.0 の連携手順 AD FS 2.0 側 Active Directory を構築 AD FS 2.0 を構築 RP(証明書利用者)として AppFabricACS を登録(メタデータの登録) クレームルールを登録 AppFabricACS V2 側 AD FS 2.0 のエンドポイントを Identity Provider として登録(メタデータの登録) クレームルールを登録 今回は実施済みとします 146. Identity Provider との連携 ~ AD FS 2.0AD FS 2.0 に証明書利用者として ACSを登録する ① Windows Azure アプリ AppFabric ACS V2 ここの設定 信頼 信頼 済 済 AD FS 2.0 メタデータのURIを控えておく 149. Identity Provider との連携 ~ AD FS 2.0AD FS 2.0 に 証明書利用者として ACS を登録する ④ 規定で「すべてのユーザーにクレームの発行を許可するか否か」を設定する(発行承認規則)。許可した場合には、クレームルール(要求規則)の設定を使用してクレームの発行条件を設定する必要がある。 151. Identity Provider との連携 ~ AD FS 2.0AD FS2.0 クレームルールを登録 ① メールアドレスがトークンに含まれるようにクレームルール(要求規則)を登録する(今回は簡単に!) クレームルール(要求規則)はかなり複雑な概念です。きちんと勉強したい方は、別冊「ADFS 2.0 を使用してWindows Azure との SSO を実現しよう」をご覧ください。 152. Identity Provider との連携 ~ AD FS 2.0(参考)AD FS 2.0 ~クレーム パイプライン 証明書利用者 (RP) クレームストア トークン ② 承認する ③ 発行する ① 受付ける 発行 変換 規則 output 受け 付け 変換 規則 input 発行 承認 規則 input output output input OK/ NG switch 要求プロバイダー信頼 (Claims Provider Trusts) 証明書利用者信頼 (Relying PartyTrust) 要求規則 (Claim Rule) 154. Identity Provider との連携 ~ AD FS 2.0AD FS2.0 クレームルールを登録 ③ クレームの 取得元 格納するクレームタイプの識別名 ※ここに表示されているのは「識別名」であることに注意。クレームタイプ(Claim Type)はURIの形式で表現される(次次ページ参照) ADから持ってくる属性 ※ldap属性名とは一致していないので注意(次ページ参照) 158. Identity Provider との連携 ~ AD FS 2.0ACS V2 の Identity Provider に AD FS 2.0 を登録する ① ここの設定 Windows Azure アプリ AppFabric ACS V2 信頼 信頼 済 済 済 AD FS 2.0 AD FS 2.0 のメタデータをテキストファイルに保存しておく https://<ADFSServer>/federationmetadata/2007-06/federationmetadata.xml 160. Identity Provider との連携 ~ AD FS 2.0ACS V2 の Identity Provider に AD FS 2.0 を登録する ③ Identity Provider の識別名。ADFS2.0は複数登録することが可能なので、識別しやすい名前を指定する AD FS 2.0 のメタデータを指定する。URL の場合には AppFabricがアクセス可能なサーバーである必要がある。 Identity Provider の選択画面に表示される識別名 Identity Provider の選択画面に表示されるロゴ画像 利用者に対して、ログオン時にEmailアドレスを強制的に入力させたい場合には、ここのメアドのサフィックス(microsoft.com)を指定する。セミコロンで複数指定可能。 このIdentity Provider を使用する アプリケーションを指定する 163. Identity Provider との連携 ~ AD FS 2.0ACS V2 の Identity Provider に AD FS 2.0 を登録する ⑥ メタデータを元に自動生成されたクレーム クレームとして emailaddressが発行されることが記載されている 164. Identity Provider との連携 ~ AD FS 2.0クレームの流れ Windows Azure アプリ AppFabric ACS V2 Token Token 変換 属性 属性 属性 属性 属性 属性 属性 属性 属性 属性 属性 属性 Token 変換 Token 属性 属性 属性 属性 属性 属性 属性 属性 属性 属性 属性 属性 AD FS 2.0 AD DS 165. Identity Provider との連携 ~ AD FS 2.0AppFabric ACSV2 の Rule IF(Rule Condition) Claim Issuer Input Claim Type Input Claim Value Then(Rule Actions) Output Claim Type Output Claim Value もし ○○から発行された ○○というクレームタイプに ○○という値が入っていたら そのときは ○○というクレームタイプに ○○という値を入れて発行する 166. Identity Provider との連携 ~ AD FS 2.0AppFabric ACS に登録されているクレームルールの例 AppFabricに対するクレームの発行者 つまりIdentity Provider AppFabric に対して入力方向のクレームタイプ AppFabric に対して入力方向のクレームタイプに格納されているべき値 入力条件を満たしたときに発行されるクレームタイプ(出力方向のクレーム) 出力方向のクレームに格納される値 167. Identity Provider との連携 ~ AD FS 2.0動作確認 https://tf20110311.cloudapp.net/ 複数のIdentity Provider が登録されている場合にはセレクターが表示される。 1つしかなければそのまま ADFS に転送される ADにログオンした状態であれば、SSOされる ADFSで定義したメアド 168. Identity Provider との連携 ~ AD FS 2.0SSOの流れ 信頼 7 9 WIF 信頼 クラウド オンプレミス 1 AD DS AD FS2.0 8 4 5 3 2 6 WIF:Windows Identity Foundation 171. Windows Live との連携AppFabric ACS V2 と WindowsLive ID の連携手順 LiveID 側 認証するだけならば何もなし! ※クレームを取得する場合は Microsoft Service Manager への登録 AppFabricACS V2 側 Rule の登録 手順を調査中です すみません… 172. Windows Live との連携(参考)Microsoft Service Manager 手順を調査中! https://msm.live.com/wizard/default.aspx Windows LiveID を使用するサイトを登録し、信頼できるサイトであることを申請 登録されていないサイトには nameidentifier 以外のクレームが返されない ※マイクロソフトのプライバシーポリシーのため 174. Identity Provider との連携 ~ Windows Live との連携Windows Live用の設定 ② ~ クレームルールの作成 クレームの変換ルールに、Windows Live 用のルールを埋め込む ルールが既に存在する場合には、既存ルールをクリックする 181. Identity Provider との連携 ~ Google との連携AppFabric ACS V2 と Google の連携手順 Google 側 なにもなし!(ユーザーがアカウントを持っていればよい) AppFabricACS V2 側 Identity Provider の登録 Rule の登録 182. Identity Provider との連携 ~ Google との連携Google用の設定 ① AppFabric ACS V2 管理サイトに移動 https://<Namespave>.accesscontrol.appfabriclabs.com/v2/mgmt/web 184. Identity Provider との連携 ~ Google との連携Google用の設定 ③ ~ クレームルールの作成 クレームの変換ルールに、Google 用のルールを埋め込む ルールが既に存在する場合には、既存ルールをクリックする 192. Identity Provider との連携 ~ Facebook との連携Facebook は複数のプロバイダーを登録可能 Facebook アプリケーションごとにクレームルールを設定できる (例)言語別、企業別、ファンサイト別 AppFabric ACS V2 Facebook Facebook 外部アプリ インターフェース クレーム発行 クレーム変換 ロール決定 Facebook 外部アプリ インターフェース クレーム変換 クレーム発行 ロール決定 属性 Facebook 外部アプリ インターフェース クレーム変換 ロール決定 クレーム発行 属性 Facebook 外部アプリ インターフェース クレーム変換 ロール決定 クレーム発行 属性 属性 ID 管理簿 193. Identity Provider との連携 ~ Facebook との連携AppFabric ACS V2 と Facebook との連携手順 Facebook 側 Facebook アカウントを作成 開発者としてアカウントを登録 AppFabricACSV2 サイトをアプリケーションとして登録 AppFabricACS V2 側 Identity Provider の登録 Rule の登録 195. Identity Provider との連携 ~ Facebook との連携開発者としてアカウントを登録 開発者用アプリケーション利用サイトへ移動 http://www.facebook.com/apps/application.php?id=2345053339 198. Identity Provider との連携 ~ Facebook との連携AppFabricACS をアプリケーションとして登録① アプリケーション作成サイトへ移動 http://www.facebook.com/developers/createapp.php アプリケーション名を入力 202. Identity Provider との連携 ~ Facebook との連携Facebook用の設定 ① AppFabric ACS V2 管理サイトに移動 https://<NameSpave>.accesscontrol.appfabriclabs.com/v2/mgmt/web 203. Identity Provider との連携 ~ Facebook との連携Facebook 用の設定 ② ACS内での Facebook の識別名(自分が識別できればなんでもよい) Facebook へのアプリ登録時に発行された Application ID(アプリID) Facebook へのアプリ登録時に発行された Application Secret(アプリの秘訣) Azure アプリケーションに絶対必要なクレームを指定する。指定しない場合には Facebook利用者が一般公開を許可している属性へのアクセス許可をユーザーに要求する。 Identity Provider 選択画面に表示したい文字列(ユーザーが識別できればなんでもよい) このIdentity Provider に関連付ける Azureアプリケーション 204. Identity Provider との連携 ~ Facebook との連携Facebook用の設定 ③ クレームの変換ルールに、Facebook 用のルールを埋め込む ルールが既に存在する場合には、既存ルールをクリックする 207. Identity Provider との連携 ~ Facebook との連携Facebook から得られるクレーム 2段階のクレーム取得手順 AppFabric ACS が取得してくれるクレーム nameidentifier expiration emailaddress name identityprovider AccessToken アプリケーション自身が取得するクレーム 上記以外の属性は AppFabric ACS で取得した AccessToken を使用して、アプリケーションの中で独自に取得する必要がある (例)user_location, user_hometown, user_website 取得した属性に対する AppFabricACS からのアクセスにはOAuthダイアログにてユーザーによるアクセス許可が必要 (参考)Facebook から取得可能なクレーム一覧 http://developers.facebook.com/docs/authentication/permissions/ 208. Identity Provider との連携 ~ Facebook との連携動作検証 ① 追加したIdentity Provider が表示される Facebook にログオンしていない場合には ログオン画面に転送 209. Identity Provider との連携 ~ Facebook との連携動作検証 ② ~ OAuthダイアログ Facebook に登録済みの個人情報に対する AppFabric ACS のアクセスを許可する アクセス許可 AppFabric ACS V2 Application Permission に指定した属性 217. ITPro の責任範囲 アーキテクチャの検討 IT Pro の責任範囲 サービスの展開 管理/監視 Drives Memory OS Patches Networking Physical Hardware この部分のコストが意外と高い 223. ハイブリッド クラウド のおさらい アプリケーション間連携 データの同期 AppFabric Service Bus ビジネスロジックの実装 コンポジットアプリケーションへの発展 SQL Azure Data Sync SQL Azure <->SQL Azure SQL Server <-> SQL Azure コードレス 仮想ネットワーク セキュリティ Windows Azure Connect オンプレミスとクラウドのセキュアなネットワーク層連携 オンプレミスの資源をクラウドから利用 (SQL Server, AD DS…) ADFS2.0,AppFabric ACS クレームベースの ID 連携 WS-Federation, WS-Trust,SAML 2.0 225. © 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.