ADFS 2.0 & ACS V2 を使用してWindows Azure との SSO を実現しよう<br />第 2.2 版2011.05.30<br />マイクロソフト株式会社<br />エバンジェリスト<br />安納 順一(あんのう じ...
本日のテーマと内容<br />何かと難解な アイデンティティ・フェデレーション の概念と実装方法を、実際の構築手順を体験しながら理解しましょう<br />AD FS 2.0 と AppFabric ACS V2 を使用して、Windows Az...
Agenda<br />復習:Active Directory<br />ハイブリッド クラウド シナリオ<br />アイデンティティ管理の現状と未来<br />アイデンティティ・フェデレーション と クレーム ベース セキュリティ<br />...
Windows Azure AppFabric ACS V2<br />AppFabric ACS V2 の役割<br />AppFabric ACS の準備<br />AD FS 2.0 と ACS V2 の連携とは<br />AD FS 2...
1.復習:Active Directory<br />
Business ReadySecurity <br />「ID & アクセス管理」は CoreIO の基盤<br />全てのリソースは ID を中心に結合<br />ホスト<br />ネットワーク<br />Access<br />アプリケー...
Active Directoryの進化<br /><ul><li>信頼性と管理性の強化、実績の拡大
周辺ソフトウェアの Active Directory対応と適用範囲の拡大</li></ul>いまここ<br />RecycleBin, AD FS 2.0<br />ADサービス化,RODC, GPP, <br />PWポリシー,PowerSh...
Active Directoryの役割<br />証明機関(Identity Provider)<br />AD DS<br />認証<br /><ul><li>ldap/kerberos/ntlm/radius/nis/CA/802.1x</...
証明書</li></ul>構成管理<br /><ul><li>グループポリシー</li></ul>権限管理<br /><ul><li>ライツマネジメントサービス</li></ul>役割管理<br /><ul><li>クレーム管理、セキュリティト...
背景を理解しましょう2.ハイブリッド クラウド シナリオ<br />
クラウドには萌えがいっぱい<br /><ul><li>整然と並んだサーバー群
暗闇に妖しくひかる LED
クールなケーブルタップ
はたらく自動車::</li></ul>萌えるわぁ<br />
真の”萌え”は…ハードウェア投資 ‘0’ で得られる高可用性<br />障害対応<br /><ul><li>故障したハードウェアの自動切り替え
自動複製によるデータ保護
ネットワークロードバランスの自動構成</li></ul>環境変化への迅速な対応<br /><ul><li>容易なスケールアウト、スケールイン
ネットワークの自動構成</li></ul>ノンストップでのメンテナンス<br /><ul><li>インスタンスを順次停止してメンテナンスすることにより全体としてのサービス停止を防ぐ</li></li></ul><li>既存システムとの統合<br...
3つの選択肢<br />全てパブリッククラウド<br />ハイブリッド<br />全てオンプレミス<br />一部をクラウドに移行して両者の良いとこ取り<br />移行コストが問題<br />従来と変わらない運用<br />
理想的なインフラストラクチャー<br />全ての基盤が “1つの” システムとして協調動作<br />ホスター<br />パブリック <br />クラウド<br />Secure CloudFederation<br />プライベートクラウド<...
Secure Cloud Federation<br />クラウド<br />オンプレミス<br />データ同期<br />~ SQL Azure Data Sync ~<br />アプリケーション間通信<br />~ AppFabric Se...
今何に困っているのか、今後何に困るのか<br />3. アイデンティティ管理の現状と未来<br />
アプリケーションは「アイデンティティ」を求める<br />なぜ? -> アクセスを制御をするため<br />クラウド<br />クラウドも<br />オンプレミスと同様<br />
クラウドサービスのユーザー管理ってどうする?<br /><ul><li>クラウド上ですべて管理すべき?</li></ul>-> リスクは?<br />-> 管理コストは?<br />-> 誰がやる?<br />
企業内 アイデンティティ管理の現状(中規模以上)<br /><ul><li>メタディレクトリを中心とした アイデンティティ情報の同期
小さな単位での統合認証</li></ul>AD<br />メタディレクトリ<br />業務<br />同期<br />同期<br />統合認証<br />同期<br />同期<br />Open<br />LDAP<br />業務<br />統...
認証とアクセス制御の現状<br />管理コストとシステム間の不整合<br /><ul><li>パスワードの二重管理
ロールの二重管理</li></ul>パスワード<br />ユーザー 管理簿 with パスワード<br />業務<br />ロール 管理簿<br />連携なし<br />アクセス権 管理簿<br />ディレクトリサービス<br />業務<br ...
クラウドもメタディテクトリで管理する?<br /><ul><li>全てのアイデンティティ情報をクラウドで管理
パスワード
メールアドレス
氏名</li></ul>同期<br />同期<br />同期<br />メタディレクトリ<br />
その結果どうなるか…<br /><ul><li>初期投資の増大
メタディテクトリシステムの導入、構築
オンプレミスと同じリスクをクラウドでも負うことに
メタディレクトリの管理
同期の不整合への対応</li></ul>こんなはずじゃ…<br />初期費用 増大!<br />管理コスト 増大!<br />…っていうか、管理しきれない…<br />
予測される アイデンティティ管理/制御の問題点<br />増え続けるクラウドサービス、アプリケーション<br />迅速なアクセス許可/拒否<br />異なる認証方式の相互運用<br />クラウド上に企業用ディレクトリサービスの設置が困難<br ...
認証と認可を分離する
クレーム ベース セキュリティ
アイデンティティ・フェデレーション</li></li></ul><li>クラウドの登場でやっと日の目を見始めたテクノロジー<br />4. アイデンティティ・フェデレーション と クレーム ベース セキュリティ<br />
アイデンティティ・フェデレーション<br /><ul><li>信頼できる認証機関によって認証された デジタルID と、サービス側に登録されている デジタルID を対応付けること
認証と認可の分離
サービス側では「認証」を行わない</li></ul>認証<br />認可/承認<br />サービスプロバイダーは<br />認証機関を信頼している<br />認証機関<br />サービス<br />プロバイダー<br />何らかの仕組み<br ...
クレーム ベース セキュリティを使用したアイデンティティ・フェデレーション<br /><ul><li>利用者は事前に 「認証機関」で認証を済ませている
「サービスプロバイダー」のアプリケーションは 「認証機関」が発行したチケットをベースにアクセス権を決定する(再認証は行わない)</li></ul>認証<br />認可/承認<br />サービスプロバイダーは<br />認証機関を信頼している<b...
現実世界のクレームベースセキュリティ(例)<br />信頼<br />米国政府<br />日本国政府<br />本人<br /><ul><li>顔
指紋</li></ul>発行<br />信頼<br />入国<br />出国<br />空港<br />健保番号<br />/免許証番号<br />/住民票<br />ビザ<br /><ul><li>滞在可能期間</li></ul>入国申請書<...
滞在先</li></ul>パスポート<br /><ul><li>発行国
氏名
有効期限
旅券番号
写真
出国印</li></ul>パスポート<br />・<br />・<br />
現実世界のクレームベースセキュリティ(例)<br />RP/SP<br />IdP/CP<br />信頼<br />米国政府<br />日本国政府<br />オーソリティ<br />(各種機関)<br />オーソリティ<br />(各種機関)<...
指紋</li></ul>発行<br />信頼<br />クレーム<br />クレーム<br />入国<br />出国<br />リソース<br />空港<br />健保番号<br />/免許証番号<br />/住民票<br />ビザ<br />...
滞在先</li></ul>クレーム<br />署名<br />パスポート<br /><ul><li>発行国
氏名
有効期限
旅券番号
写真
出国印</li></ul>クレーム<br />パスポート<br />・<br />・<br />署名<br />
クレーム とは<br />アプリケーションに渡すユーザー自身の属性<br />ユーザーのロールを表現しアクセス承認に使用される<br />ユーザー ID<br />氏名、姓、名<br />資格情報(認証結果)<br />住所<br />メール ...
セキュリティ トークン/アサーション<br />パッケージ化されたクレーム<br />発行者(オーソリティ)の署名によって信頼性を担保<br />発行者とは事前に信頼関係を結んでおく<br />セキュリティトークン/アサーション<br />クレ...
現実世界のアイデンティティ・フェデレーション<br />ロール<br /><ul><li>メンバーステータス
宿泊期間
ルームタイプ
サービス内容</li></ul>RP/SP <br />IdP/CP<br />予約情報<br />アイデンティティを一意に対応付け<br />米国政府<br />日本国政府<br />信頼<br />健保番号<br />/免許証番号<br /...
氏名
有効期限
旅券番号
写真
出国印</li></ul>ホテル<br />
クレーム ベース セキュリティを使用したアイデンティティ・フェデレーション の流れ<br /><ul><li>利用者は事前に 「CP / IdP」で認証を済ませている
「RP / SP」側のオーソリティはアプリケーション用にトークンを変換
「RP / SP」側のアプリケーションは再認証は行わない</li></ul>⑦ID関連付け,ロール決定<br />④ セキュリティトークン変換<br />RPは CP を信頼している<br />CP / IdP<br />RP / SP<br ...
CP / IdPと RP / SP 間の信頼関係について<br />「信頼」とは何か?<br />物理的には<br />メタデータ/証明書/暗号化キーを事前に交換<br />お互いの「すり替わり」を防止<br />データの横取りを防止<br /...
Claims Provider / Identity Provider<br />ユーザーを認証し身元を証明するセキュリティトークンを発行する<br /><ul><li>セキュリティトークンの発行条件として、認証基盤は規定されていない(製品ベン...
Relying Party/ Service Provider <br />ユーザーの”ロール”を元にサービス利用を認可する<br /><ul><li>WEBアプリが受け入れ可能なセキュリティトークンに変換
WEBアプリはユーザーのロールを確認しアクセス権を決定</li></ul>省略されることもある<br />RP/ SP<br />WEBアプリ<br />オーソリティ<br />新セキュリティトークン<br />ブラウザ/アプリケーション<br...
企業内フェデレーションと企業間フェデレーション<br /><ul><li>CP/IdPから送付されるセキュリティトークンが信頼できる場合には、RP/SP側のオーソリティは省略できる</li></ul>MS<br />社内なのでIdPに一任<br...
Active DirectoryFederation Service2.0<br />
AD FS 2.0 の役割と目的について<br />5.AD FS2.0 の基礎知識<br />
SSO を実現するための構成要素<br />AD DS<br />認証サーバー<br /><ul><li>ユーザーを認証する
AD FS2.0 サービスを認証する</li></ul>STS( セキュリティトークンサービス )<br /><ul><li>AD認証されたユーザーに対してセキュリティトークンを発行する
アプリケーションにセキュリティトークンを渡す</li></ul>AD FS 2.0<br />クレームストア<br /><ul><li>セキュリティトークンに組み込むユーザー属性が格納されている</li></ul>AD DS/AD LDS<br...
基本的な構成<br /><ul><li>それぞれの企業にSTSを設置
STS 間でフェデレーション信頼を構築</li></ul>企業A<br />企業B<br />RP/SP<br />IdP/CP<br />AD DS<br />信頼<br />④アクセス<br />AD DS<br />①認証<br />WI...
基本的な構成~簡易版<br /><ul><li>同一企業内であれば STS は1台で構築可能</li></ul>企業A<br />RP/SP<br />IdP/CP<br />1台のサーバーで構築<br />信頼<br />③アクセス<br /...
アプリケーションがクラウドだったら…<br /><ul><li>クラウドアプリでも考え方は変わらない</li></ul>企業A<br />RP/SP<br />IdP/CP<br />1台のサーバーで構築<br />③アクセス<br />AD ...
AD FS2.0 関連コンポーネントの配置と役割<br />intranet<br />DMZ<br />ADFSPROXY<br />ADFS<br />AD DS<br />構成DB<br />loadbalance<br />loadba...
6. これから構築する環境<br />
システム構成図<br />システムの特徴<br /><ul><li>AD FS 1台構成
ADFS はCNAMEを使用
構成DBとして SQL Server を使用</li></ul>Application<br />基本構成情報<br /><ul><li>ドメイン名:tf.com
管理者    :administrator
管理者パスワード:P@ssw0rd</li></ul>CName<br />tf20101102-01(tfadfs)<br />tf20101102-03<br />tf20101102-VS<br />Application<br />Ap...
手順概要<br /><ul><li>Windows Server 2008 R2 のインストールと構成
ActiveDirectory のインストールと構成
SQL Server のインストール
IIS のインストール
Windows Azureサブスクライブ
AD FS 2.0 展開の準備
AD FS 2.0 のインストールと初期構成
アプリケーションの開発
Windows Azure 上にアプリケーションを展開
クレームルールのカスタマイズ</li></ul>済<br />済<br />済<br />済<br />済<br />構築<br />
7.AD FS 2.0 展開の準備<br />済<br />AD FS 2.0 用 証明書の準備<br />IIS の SSL を有効化<br />WinSv 2008 R2 のセットアップ<br />Active Directory のセット...
AD FS 2.0 に必要な証明書<br /> ⑤AD FS 2.0 用証明書の準備<br /><ul><li>サービス通信証明書(SSL に使用)
AD FS の通信を暗号化するために使用
既定では IIS の SSL 用証明書が使われる
サブジェクト(主体名)がフェデレーションサービス名と一致していること ※サーバーファーム構成では注意が必要
トークン署名証明書
AD FS が発行するトークンの署名
公開メタデータの署名
RPから送信されるアーティファクト解決要求の署名
トークン暗号化解除証明書
AD FS が受け取ったトークンの暗号化を解除するために使用
IIS の SSL 証明書が既定の暗号化解除証明書として使用される</li></ul>今回は自己署名証明書を使用します<br />
IIS を使用した自己署名証明書の作成<br /> ⑤AD FS 2.0 用証明書の準備<br />サブジェクト(主体)がホスト名<br />
CNAME を登録<br /> ⑤AD FS 2.0 用証明書の準備<br />tf20101102-01.tf.com<br /> (192.168.100.1)<br />CNAME = tfadfs<br />名前解決<br />SSL証...
 ⑤AD FS 2.0 用証明書の準備<br />自己署名証明書を作成するツール<br />.NET Framework SDK 内の以下のツールを使用<br /><ul><li>makecert.exe  ← サブジェクトを指定できる
pvk2pfx.exe</li></ul>.CER<br />.PFX<br />pvk2pfx<br />makecert<br />.PVK<br />
 ⑤AD FS 2.0 用証明書の準備<br />自己署名証明書の作成<br />Visual Studio をインストールしたマシンにログオン<br />[スタート]-[すべてのプログラム]-[Microsoft Visual Studio ...
 ⑥IIS の SSL を有効化<br />[Default Web Site] の SSL を有効にする<br />
 ⑥IIS の SSL を有効化<br />接続テスト<br />https://tfadfs.tf.com/<br />
自己署名証明書の取り込み<br /> ⑥IIS の SSL を有効化<br />
 ⑥IIS の SSL を有効化<br />
8.AD FS 2.0 のインストールと初期構成<br />AD FS 2.0 のインストール<br />AD FS 2.0 初期構成の準備<br />AD FS 2.0 初期構成<br />AD FS 2.0 管理コンソールの確認<br />
① AD FS 2.0 のインストール<br />AD FS 2.0 のダウンロード<br />Active Directory Federation Services 2.0 RTW - 日本語<br />2008用<br />2008 R2...
① AD FS 2.0 のインストール<br />AD FS 2.0 のインストール (1)<br />AdfsSetup.exe を実行<br />
AD FS 2.0 のインストール (2)<br />① AD FS 2.0 のインストール<br />前提条件は自動的に満たしてくれる<br />再起動<br />
AD FS 2.0 初期構成前の準備<br />② AD FS 2.0 初期構成の準備<br />サーバー構成を決めておく<br /><ul><li>スタンドアロン
サーバーファーム</li></ul>構成データベースを決めておく<br /><ul><li>Windows Internal Database
SQLServer</li></ul>サービスアカウントを作成しておく<br />
サーバーファーム と スタンドアロン<br />② AD FS 2.0 初期構成の準備<br />スタンドアロン<br />AD FS サーバー 1台<br />構成DB は WID のみ<br />サーバーファーム<br />AD FS サー...
② AD FS 2.0 初期構成の準備<br />AD FS 2.0 ~ サーバー ファームと構成 DB<br />スタンドアロン+ WID<br />サーバー ファーム+ WID<br /><ul><li>各サーバーが WID を持つ
5 分に 1 回の更新チェック(各サーバー->プライマリ)
機能制限が発生
SAMLToken Replay Detection
SAML Artifact Resolution</li></ul>サーバー ファーム+ SQL Server<br /><ul><li>fsconfig.exe コマンドによる構成
WID からの移行は不可
SQL Server は 1 セット
クラスター構成可能</li></ul>低<br />プライマリ<br />可用性<br />ADFS<br />R/W<br />ADFS<br />ADFS<br />R/O<br />R/O<br />セカンダリ<br />セカンダリ<br...
構成データベースによる手順の違い<br />② AD FS 2.0 初期構成の準備<br />使用する構成データベースによって構成手順が異なる<br /><ul><li>Windows Internal Database(WID) -> ウィザ...
SQL Server -> fsconfigコマンド  でのみ構成可能</li></ul>一度構成した後で移行することはできないので注意しましょう!<br />WIDが使われる<br />
② AD FS 2.0 初期構成の準備<br />(参考) Token Replay Attack とは<br />http://msdn.microsoft.com/en-us/library/ee517257.aspx<br />取得済のセ...
② AD FS 2.0 初期構成の準備<br />(参考) SAML Artifact Resolution とは<br />Artifact (アーティファクト)<br />セキュリティトークン  (SAML Assertion)のリファレン...
AD FS 用サービスアカウントの作成<br />② AD FS 2.0 初期構成の準備<br />AD FS が使用するサービスアカウント<br />サーバーファーム(複数のAD FS サービス)で共有するためドメインユーザーアカウントとして...
③ AD FS 2.0 初期構成<br />インストール直後の管理コンソール<br />ちょっとまった!<br />脊髄クリック注意!!<br />
1台目のAD FS~ 環境構成ウィザード編 (1)<br />③ AD FS 2.0 初期構成<br />
1台目のAD FS~ 環境構成ウィザード編 (2)<br />③ AD FS 2.0 初期構成<br />事前に取り込んでおいた証明書が表示される<br />事前に作成しておいたサービスアカウント<br />(注意)<br />サービスアカウン...
③ AD FS 2.0 初期構成<br />サービス名をチェック<br />これがAD FS のエンドポイントの一部になります<br />
③ AD FS 2.0 初期構成<br />1台目の AD FS~ 環境構成ウィザード編 (3)<br />サービスアカウントに指定したユーザーが管理者権限を持っていない場合に発生する<br />
③ AD FS 2.0 初期構成<br />SPN(Service Principal Name)とは?<br /><ul><li>サービスのインスタンスを正確に識別するための ID(乗っ取りを回避)
Kerberos でサービスの認証に使用される
登録するには管理者権限が必要
ドメイン内に同じ SPN は登録できない</li></ul>SPN チェック<br />SPNを送付<br />KDC<br />SPN<br />AD DS<br />kerberos チケットを発行<br />チケット送付<br />AD ...
③ AD FS 2.0 初期構成<br />SPN を手動で登録する<br />setspn -a host/adfssrv <ドメイン名><サービスアカウント名><br />(例)setspn-a host/adfssrvtfadfssvc<...
AD FS 2.0 を構成するファイルと設定情報<br />③ AD FS 2.0 初期構成<br />SF : Server Farm<br />
AD FS 2.0 をアンインストールするには<br />③ AD FS 2.0 初期構成<br />(参考)http://blogs.technet.com/b/junichia/archive/2010/07/28/3347209.aspx...
WID の管理方法<br />③ AD FS 2.0 初期構成<br />SQL Server Management Studio Express を使用<br />サーバー名は.pipemssql$microsoft##sseesqlquer...
1台目のAD FS~ fsconfigコマンド編(SQL Server を使用)<br />③ AD FS 2.0 初期構成<br />書式<br />FSConfig.exe CreateSQLFarm<br />/ServiceAccoun...
③ AD FS 2.0 初期構成<br />入力例<br />AD FS 2.0 のインストールディレクトリに移動<br />C:> cd C:Program FilesActive Directory Federation Services ...
③ AD FS 2.0 初期構成<br />対応を忘れずに!<br />IIS上のアプリケーションを削除していない場合に出力される<br />
④AD FS 2.0 管理コンソールの確認<br />AD FS 2.0 管理コンソールの基礎<br />この AD FS 2.0(STS)で扱うことができるクレームが定義されている。逆に言えばここに定義されていないクレームを使うことはできない...
④AD FS 2.0 管理コンソールの確認<br />AD FS 2.0 管理コンソールの基礎要求記述<br /><ul><li>システム間で送受信するクレームタイプが定義されている
ここに定義されていないクレームは、要求規則テンプレートで使用することができない(カスタムルールでは独自に作成可能)</li></ul>このクレームを外部から受信可能か否か、外部に送信可能か否かを定義<br />ワールドワイドで一意なクレームの名...
④AD FS 2.0 管理コンソールの確認<br />(参考)既定のクレーム タイプ<br />
④AD FS 2.0 管理コンソールの確認<br />
9.Windows Server と Windows Azure の違い<br />
Windows AzurePlatform の位置づけ<br />
*aaS の違い<br />App<br />App<br />App<br />IaaS<br />PaaS<br />App<br />Platform<br />Platform<br />Platform<br />Platform<b...
Windows AzurePlatform<br />Web Role<br />Worker Role<br />VM Role<br />Windows Azure Platform<br />Windows Azure<br />コンピュ...
マイクロソフトデータセンター用の Windows Server<br />Node 用のOS<br />PXEBoot用OS<br />ゲストOSに<br />使用される<br />ゲストOSに<br />使用される<br />Rack<br ...
Windows Azure の展開<br />マイクロソフトデータセンター用の Windows Server<br />Node 用のOS<br />PXEBoot用OS<br />ゲストOSに<br />使用される<br />ゲストOSに<b...
RootVMを展開/監視</li></ul>ComputeNode<br />RootVM<br />GuestVM<br />GuestVM<br /><ul><li>Guest Agent をインストール
Guest VM を監視する</li></ul>GuestAgent<br />GuestAgent<br />Fabric Agent<br />Windows AzureHypervisor<br />Windows AzureOS(VHD...
ロール<br /><ul><li>ゲストOS に与える役割
Web ロール - フロントWEBサービスに最適化されている
Worker ロール - バックエンドサービスに最適化されている
VM ロール- 利用者によりカスタマイズが可能</li></ul>Web ロール<br />Worker ロール<br />フロントエンド<br />Web サービス<br />バックエンド<br />サービス<br />xxx.cloudap...
アプリケーション展開までの流れ<br />Windows Server の場合<br />Application<br />手動<br />Windows Server<br />Windows Server<br />IIS<br />IIS...
Windows Azure VM のスケーラビリティ<br />価格は2011年5月現在<br />サブスクリプションあたり<br />最大20インスタンス<br />UP<br />OUT<br />インスタンス数<br />
スケールアウトとスケールイン<br />負荷に応じてインスタンス数を調整できる<br />インスタンスの増減はユーザーに影響しない<br />ロール<br />インスタンス<br />Application<br />Application<b...
アップグレード ~ Inーplace Update 方式<br />Update Domain 単位でアップデートする<br />利用者には影響を与えない<br />自動更新(パッチ適用)時にも同じ方式が適用される<br />Update Do...
アップグレード ~ VIP Swap 方式<br />ステージング環境とプロダクション環境の仮想IPを入れ替える<br />短時間での展開<br />容易なロールバック(やりなおし)<br />xxx.xxx.xxx.xxx<br />プロダク...
ハードウェア障害の影響<br />Fault Domain<br />Cluster<br />Top of Rack Switches<br />Fabric Controller<br />Node<br />Node<br />Node<...
Fault Domain<br /><ul><li>物理的な障害の単位(≒ ラック)
ファブリック コントローラー
電源ユニット
スイッチ等
ハード障害がサービス全体に及ばないための機構
Windows Azure ファブリックは、ロールインスタンス群を最低 2つの異なる Fault Domainに分散配置する
ホストコンピューターのメンテナンス単位
緊急度の高い障害修正
緊急度の高いセキュリティパッチ
どの Fault Domain に所属するかは制御できない</li></li></ul><li>ローカルストレージ<br /><ul><li>Windows Azure のローカルストレージは 非永続的である</li></ul>いつ消えるかわか...
Visual Studioで設定したアプリ用のローカルストレージ</li></ul>D:<br />VHD<br />E:<br />ホスト(物理マシン)<br />Hyper-V<br /><ul><li>OS 本体</li></ul>Ser...
Windows Azure と Windows Server の違い<br />ローカルストレージリセットのタイミング<br />Reboot と ReImage(再展開)はシステム管理者の指示以外でも発生する<br />
Windows Azure と Windows Server の違い<br />永続ストレージ<br />残したいデータは永続ストレージに保存する<br />Windows AzureStorage<br />SQL Azure<br />RE...
Windows Azure Storage へのアクセス<br />計算ノードとストレージノードは分離されている<br />Storage Node<br />Compute Node<br />Container<br />Guest OS<...
IT Pro と開発者の役割分担<br />アプリケーションの動作に必要な設定やファイルは、         スクリプトに埋め込んで展開する必要がある<br />基本的に Visual Studio で設定<br />プログラム本体<br />...
ライブラリのインストール
レジストリの修正</li></ul>などなど<br />Hyper-V<br />Server<br />個別ファイル<br />スタートアップスクリプト等で使用するファイル<br />
10.Windows Azure の準備<br />サービスを作成<br />自己署名証明書の登録<br />
② サービスの作成<br />サービスの新規作成<br />Windows Azure ポータル に移動<br />http://windows.azure.com/<br />
② サービスの新規作成<br />サービスのURLを設定する<br />識別名なので何でもよい<br />アプリケーションのURL<br />世界で唯一である必要がある<br />アプリケーションを展開するデータセンター<br />同時にアプリ...
② サービスの新規作成<br />サービスの初期状態<br />「URL」を確定しただけなので、まだ OS は展開されていない<br />
③ 自己署名証明書の準備<br />Windows Azure で使用する証明書とは<br />参考<br />http://blogs.technet.com/b/junichia/archive/2010/09/02/3353275.asp...
③ 自己署名証明書の準備<br />証明書の登録場所<br />サブスクリプション<br />サブスクリプション<br />証明書(.cer)<br />アカウント<br />import<br />サービス<br />tf20110311.c...
③ 自己署名証明書の準備<br />[FAQ] 証明書の「主体(Subject)」について<br />http://blogs.technet.com/b/junichia/archive/2010/09/03/3353536.aspx<br ...
③ 自己署名証明書の準備<br />自己署名証明書の作成<br />Visual Studio をインストールしたマシンにログオン<br />[スタート]-[すべてのプログラム]-[Microsoft Visual Studio 2010]-[...
③ 自己署名証明書の準備<br />サブスクリプション証明書の登録(.cer)<br />
11. クレーム対応アプリケーションとは<br />
クレーム対応アプリケーションとは<br />「認証の分離」とその限界<br />多くのアプリケーションが「認証」を分離してきたが…<br />アプリケーション<br />これまでの方式<br />認証<br />ロール<br />サービス<br...
クレーム対応アプリケーションとは<br />「認証分離」の限界<br /><ul><li>認証プロトコルの違い
Identity 管理ポリシーの違い
アプリケーション側の対応
Single Sign-On/Off への適用</li></ul>Active <br />Directory<br />アプリ1<br />プロトコル<br />情報の整形<br />情報の解釈<br />情報<br />プロトコル<br /...
クレーム対応アプリケーションとは<br />解決への考察<br /><ul><li>フェデレーション信頼による素結合
STS によりアプリケーション側の処理を削減
情報はセキュリティトークンに格納して受け渡し</li></ul>STS<br />STS<br />Active <br />Directory<br />アプリ1<br />プロトコル<br />情報の整形<br />情報の解釈<br />プ...
クレーム対応アプリケーションとは<br />ADFS2.0 と WIF の役割<br /><ul><li>AD FS 2.0 がユーザーのロールを管理
アプリケーションは受け取ったロールを解釈するだけ</li></ul>WIF<br />AD FS 2.0<br />STS<br />STS<br />Active <br />Directory<br />アプリ1<br />プロトコル<br...
クレーム対応アプリケーションとは<br />認証/ロール管理からの分離<br />アプリケーション<br />これまでの方式<br />認証<br />ロール<br />サービス<br />アプリケーション<br />認証<br />ロール<b...
クレーム対応アプリケーションとは<br />WIF アプリケーションの構造<br />WIF (Windows Identity Foundation) を使用してセキュリティー トークンからクレームを取り出す<br />WIF は WS-Fe...
クレーム対応アプリケーションとは<br />クレームの構造と識別方法<br />Microsoft.IdentityModel.Claims<br />http://msdn.microsoft.com/ja-jp/library/micros...
クレーム対応アプリケーションとは<br />サポートされているプロトコルとトークン形式<br />AD FS 2.0 <br />WIF<br />パッシブ SAML WebSSO<br />SAML 2.0 トークン<br />パッシブ WS...
12. クレーム対応アプリケーションの作成<br />開発環境の準備<br />アプリケーションの作成<br />
事前にインストールしておくもの<br />① 開発環境の準備<br />Windows 7 + Visual Studio 2010(Expressも可)の場合<br />WindowsAzure Tools for Microsoft Vis...
WIF対応アプリケーション用テンプレートを複製<br />① 開発環境の準備<br />%Program Files(x86)%Windows Identity Foundation SDKv4.0Visual Studio Extension...
② アプリケーションの作成<br />管理者として VSを実行<br />OR<br />
② アプリケーションの作成<br />テンプレートの選択<br />
② アプリケーションの作成<br />ロールの指定<br />ワーカーロールとWebロールの違いについての詳細は以下を参照<br />Windows Azure Platform の概要<br />http://technet.microsof...
② アプリケーションの作成<br />Windows Identity Foundation の参照追加<br />.NET から Microsoft.IdentityModel を追加する<br />
② アプリケーションの作成<br />Microsoft.IdentityModel モジュールの複製設定<br />Windows Azure で用意されている Windows Server には WIF がインストールされていない。そこで、...
② アプリケーションの作成<br />SSL の設定とは<br />SSL を使用する場合には、サービス証明書へのポインター(Thumprint)を<br />Visual Studio 側に設定しておく必要がある<br />
② アプリケーションの作成<br />SSLの設定 ①<br />
② アプリケーションの作成<br />SSLの設定 ②<br />識別名なので何でもよい<br />このまま<br />サービス証明書の Thumbprint<br />HTTPS/443 を選択<br />証明書の識別名を<br />選択<b...
② アプリケーションの作成<br />STS 参照の追加 とは<br />アプリケーションにSTS(セキュリティ トークン サービス)のメタデータを取り込むことで、信頼関係を確立する<br />サービス提供<br />信頼<br />取り込む<...
② アプリケーションの作成<br />STS 参照の追加 ①<br />AzureアプリのURLを指定する<br />
② アプリケーションの作成<br />STS 参照の追加 ②<br />「既存のSTSを使う」に AD FS 2.0 のメタデータを指定する<br />指定するのはCNAMEを使用したホスト名 https://tfadfs.tf.com/~<b...
② アプリケーションの作成<br />STS 参照の追加 ③<br />今回は自己発行証明書なので「チェックしない」<br />
② アプリケーションの作成<br />STS 参照の追加 ④<br />IIS のSSL証明書が使われる<br />
② アプリケーションの作成<br />STS 参照の追加 ⑤<br />AD FS 2.0 のメタデータに記載されている、「必須な」「使用可能な」<br />クレームタイプの一覧が表示される<br />AD FS 2.0 で用意された<br /...
② アプリケーションの作成<br />STS 参照の追加 ⑥<br />AD FS 2.0 のメタデータを定期的に取り込むかどうかを指定する<br />
② アプリケーションの作成<br />STS 参照の追加 ⑦<br />STS参照追加後のプロジェクト<br />アプリ自身のメタデータが生成される<br />AD FS 2.0 側に取り込む必要がある<br />※AD FS 2.0 のメタデ...
② アプリケーションの作成<br />Web.configの編集 ①<br /><system.web> は複数存在するので、挿入場所に注意してください<br /><configuration><br /> <system.web> <br /...
② アプリケーションの作成<br />Web.configの編集 ②<br />Azure にアップロードした サービス証明書の Thumbprint を追記する<br /><serviceCertificate><br /><certific...
② アプリケーションの作成<br />コーディング<br />…面倒なので作ってあります<br />以下からダウンロードできます…<br />http://blogs.technet.com/b/junichia/archive/2011/03...
13. アプリケーションをAzureに展開<br />[解説]アプリケーションの発行方法について<br />サービスパッケージを作成<br />サービスパッケージをアップロード<br />メタデータへの接続を確認<br />
① アプリケーションの発行方法について<br />アプリケーションの発行方法について<br />今回はこちらの<br />方法を使用する<br />2通りの発行方法<br /><ul><li>Visual Studio から直接発行する
パッケージファイルを保存して、ポータルサイトからアップする</li></ul>直接発行<br />アップロードして展開<br />ここまでは<br />開発者の仕事<br />展開するのはITPROの仕事<br />サービスパッケージを作成<b...
② サービスパッケージを作成<br />サービスパッケージを作成 (1)<br />IIS への発行とは少し異なります<br />インフラ担当者は、今後パッケージの展開を依頼されることがあるはずです<br />その場合にはこの方法を使用します。...
② サービスパッケージを作成<br />サービスパッケージを作成 (2)<br />コンパイルが完了するとエクスプローラーが開かれる<br />この2つのファイルを<br />アップロードする<br />
③ サービスパッケージをアップロード<br />サービスパッケージをアップロード (1)<br />
③ サービスパッケージをアップロード<br />サービスパッケージをアップロード (2)<br />ロールインスタンスが1つの場合に出るワーニング<br />
③ サービスパッケージをアップロード<br />サービスパッケージをアップロード (3)<br />
③ サービスパッケージをアップロード<br />サービスパッケージをアップロード (4)<br />URLはHTTPであることに注意<br />
メタデータへの接続を確認<br />アップロードが完了してステータスが「Ready」になったら、以下に接続して表示されることを確認してみましょう。<br />https://tf01.cloudapp.net/FederationMetadat...
14.AD FS 2.0 への登録<br />AD FS 2.0 への登録<br />動作確認<br />
① AD FS への登録<br />AD FS 2.0 への 登録 とは<br />アプリケーションのメタデータをAD FS 2.0 に登録することで、セキュリティトークンの発行を許可する<br />サービス提供<br />信頼<br />取り...
AD FS 2.0 への登録 (1)<br />① AD FS への登録<br />今度は WindowsAzure に展開したアプリケーションを、AD FS 2.0 に登録します。<br />前ページのメタデータ<br />のURLを指定する...
① AD FS への登録<br />AD FS 2.0 への登録 (2)<br />見分けがつきやすい表示名を指定する<br />
① AD FS への登録<br />AD FS 2.0 への登録 (3)<br />
② 動作確認<br />実行テスト<br />https://tf01.cloudapp.net/<br />
もし認証ダイアログが表示されたら<br />② 動作確認<br />参考サイト<br />http://blogs.technet.com/b/junichia/archive/2011/01/18/3380918.aspx<br />原因<b...
② 動作確認<br />Passive Web SSO の流れ<br />ブラウザを使用してアプリケーションにアクセス<br />アプリケーションが信頼している CPにリダイレクト<br />セキュリティトークン発行のために CP 側 で認証<...
AD FS2.0 をもっと使いこなすために<br />15.AD FS2.0Deep Dive<br />クレームパイプラインと要求規則(クレームルール)<br />要求規則の定義例<br />カスタムルールの定義例<br />AD FS 2....
AD FS 2.0Deep Dive<br />クレームパイプラインと要求規則(クレームルール)<br />
用語について<br />基本的に、日本語 UI に沿った用語を使用します。<br />が…ちょっとアレなところもあるので、以下の対応票を参考にしてください。<br />
クレームパイプラインと要求規則(クレームルール)<br />要求規則 (Claim Rule)<br />入力された情報をルール (規則) に沿って処理し出力する<br />処理されたクレームは既定のパイプラインを通る<br />要求規則<br...
クレームパイプラインと要求規則(クレームルール)<br />要求規則セット (Claim Rule Set) のタイプ<br />受け付け変換規則 - Acceptance Transform Rule Set要求プロバイダー ー(AD DS,...
クレームパイプラインと要求規則(クレームルール)<br />AD FS 2.0 ~クレーム パイプライン<br />証明書利用者<br />(RP)<br />クレームストア<br />トークン<br />② 承認する<br />③ 発行する<...
クレームパイプラインと要求規則(クレームルール)<br />受け付け変換規則<br />① 受付ける<br /><ul><li>「要求プロバイダー信頼」で設定する
「証明書利用者信頼」に渡すためのクレームをセットする</li></ul>大原則①<br />ここで定義されたクレームのみが、パイプラインに沿って「証明書利用信頼」に渡される<br />
クレームパイプラインと要求規則(クレームルール)<br />発行承認規則<br />② 承認する<br /><ul><li>「証明書利用者信頼」で設定する
「発行変換規則」に移行させるかどうかを判断
クレームは発行しない</li></ul>この設定では「受け付け変換規則」を通過したユーザー全てに、「発行変換規則」への進行を許可<br />
クレームパイプラインと要求規則(クレームルール)<br />③ 発行する<br />発行変換規則<br /><ul><li>「証明書利用者信頼」で設定する
以下を最終決定する
ユーザーにセキュリティトークンを発行するかどうか
RP/SP にどんなクレームを送信するか</li></ul>規定では空(何も発行しない)<br />ただし、「認証メソッド」と「認証日時」だけは送信される<br />
クレームパイプラインと要求規則(クレームルール)<br />クレームルールを定義するには?<br /><ul><li>要求規則テンプレートを使用
規定で用意されているルールを使用する場合
[LDAP 属性を要求として送信]
[グループ メンバーシップを要求として送信]
[入力方向の要求を変換]
[入力方向の要求をパススルーまたはフィルター処理]
[カスタム規則を使用して要求を送信]
[入力方向の要求に基づいてユーザーを許可または拒否]
[すべてのユーザーを許可]
カスタムルールを定義
用意されていないルール(ロジック)を使用する場合
用意されていない ldap属性を使用する場合
AD DS/ldap以外のクレームストアを使用する場合
SQL Server
その他(テキストファイル など)</li></ul>and くどいようですが…<br />[要求記述]に記載されていないクレームタイプは使用できないので、事前に定義しておく必要がある<br />
クレームパイプラインと要求規則(クレームルール)<br />(参考)既定の LDAP 属性<br />これ以外の ldap 属性を使用する場合には「カスタム規則」を使用<br />
AD FS 2.0Deep Dive<br />要求規則(クレームルール)の定義 例<br />要求記述の定義<br />発行承認規則の定義<br />発行変換規則の定義<br />クレームルールの定義にありがちなミス<br />
要求規則(クレームルール)の定義 例<br />シナリオ<br /><ul><li>役割がエバンジェリストであるユーザーにのみセキュリティトークンを発行する
セキュリティトークンには「氏名」「役職」「部署」「メール」を含める</li></ul>規定で用意されないため「要求記述」に定義する必要がある<br />
Upcoming SlideShare
Loading in …5
×

AD FS 2 と ACS v2 による Windows azure_step_bystep_v2.2_update1_noanime.pptx.アニメ削除済

3,285 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,285
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
67
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

AD FS 2 と ACS v2 による Windows azure_step_bystep_v2.2_update1_noanime.pptx.アニメ削除済

  1. 1. ADFS 2.0 & ACS V2 を使用してWindows Azure との SSO を実現しよう<br />第 2.2 版2011.05.30<br />マイクロソフト株式会社<br />エバンジェリスト<br />安納 順一(あんのう じゅんいち)<br />http://blogs.technet.com/junichia/<br />twitter @junichia<br />
  2. 2. 本日のテーマと内容<br />何かと難解な アイデンティティ・フェデレーション の概念と実装方法を、実際の構築手順を体験しながら理解しましょう<br />AD FS 2.0 と AppFabric ACS V2 を使用して、Windows Azure 上に展開した アプリケーション への シングルサインオン を構成します。<br />Windows Azure の基礎知識<br />AD FS 2.0 のインストールおよび環境設定方法<br />Windows Azure の環境設定方法<br />クレームを認識するアプリケーションの作成方法<br />AppFabric ACS V2 との連携方法<br />
  3. 3. Agenda<br />復習:Active Directory<br />ハイブリッド クラウド シナリオ<br />アイデンティティ管理の現状と未来<br />アイデンティティ・フェデレーション と クレーム ベース セキュリティ<br />Active Directory Federation Service 2.0<br />AD FS 2.0 の基礎知識<br />これから構築する環境<br />AD FS 2.0 展開の準備<br />AD FS 2.0 のインストールと初期構成<br />Windows Server と Windows Azure の違い<br />Windows Azure の準備<br />クレーム対応アプリケーションとは<br />クレーム対応アプリケーションの作成<br />アプリケーションをAzureに展開<br />アプリケーションを AD FS 2.0 に登録<br />AD FS 2.0 Deep Dive<br />
  4. 4. Windows Azure AppFabric ACS V2<br />AppFabric ACS V2 の役割<br />AppFabric ACS の準備<br />AD FS 2.0 と ACS V2 の連携とは<br />AD FS 2.0 と ACS V2 の連携構築<br />Google と ACS V2 との連携構築<br />Facebook と ACS V2 との連携構築<br />
  5. 5. 1.復習:Active Directory<br />
  6. 6. Business ReadySecurity <br />「ID & アクセス管理」は CoreIO の基盤<br />全てのリソースは ID を中心に結合<br />ホスト<br />ネットワーク<br />Access<br />アプリケーション<br />情報<br />ID<br />CoreIO : Core Infrastructure Optimization<br />
  7. 7. Active Directoryの進化<br /><ul><li>信頼性と管理性の強化、実績の拡大
  8. 8. 周辺ソフトウェアの Active Directory対応と適用範囲の拡大</li></ul>いまここ<br />RecycleBin, AD FS 2.0<br />ADサービス化,RODC, GPP, <br />PWポリシー,PowerShell対応<br />ADFS, SFU統合<br />ADAM, RMS, 管理機能の大幅な強化!<br />Active Directory 登場!<br />LDAP互換,Kerberos, マルチマスター, AD統合DNS<br />Group Policy, GC, Site Link, SFU, 証明書 ...<br />
  9. 9. Active Directoryの役割<br />証明機関(Identity Provider)<br />AD DS<br />認証<br /><ul><li>ldap/kerberos/ntlm/radius/nis/CA/802.1x</li></ul>リポジトリ<br /><ul><li>ユーザー/組織/グループ/ホスト
  10. 10. 証明書</li></ul>構成管理<br /><ul><li>グループポリシー</li></ul>権限管理<br /><ul><li>ライツマネジメントサービス</li></ul>役割管理<br /><ul><li>クレーム管理、セキュリティトークン発行</li></ul>AD RMS<br />AD CS<br />AD FS<br />AD LDS<br />
  11. 11. 背景を理解しましょう2.ハイブリッド クラウド シナリオ<br />
  12. 12. クラウドには萌えがいっぱい<br /><ul><li>整然と並んだサーバー群
  13. 13. 暗闇に妖しくひかる LED
  14. 14. クールなケーブルタップ
  15. 15. はたらく自動車::</li></ul>萌えるわぁ<br />
  16. 16. 真の”萌え”は…ハードウェア投資 ‘0’ で得られる高可用性<br />障害対応<br /><ul><li>故障したハードウェアの自動切り替え
  17. 17. 自動複製によるデータ保護
  18. 18. ネットワークロードバランスの自動構成</li></ul>環境変化への迅速な対応<br /><ul><li>容易なスケールアウト、スケールイン
  19. 19. ネットワークの自動構成</li></ul>ノンストップでのメンテナンス<br /><ul><li>インスタンスを順次停止してメンテナンスすることにより全体としてのサービス停止を防ぐ</li></li></ul><li>既存システムとの統合<br />すべてがクラウドで動くわけではない<br />新しいクラウドアプリとオンプレミスを結合しなければならない<br />クラウド上でのビジネスプロセスの表現<br />使用中のワークフローエンジンがクラウド上に用意されていない<br />クラウドへの移行が面倒<br />既存方式やテクノロジーを、あまり変えたくない  <br />クラウドアプリの監視が面倒くさい<br />でも…困った現実もある…<br />
  20. 20. 3つの選択肢<br />全てパブリッククラウド<br />ハイブリッド<br />全てオンプレミス<br />一部をクラウドに移行して両者の良いとこ取り<br />移行コストが問題<br />従来と変わらない運用<br />
  21. 21. 理想的なインフラストラクチャー<br />全ての基盤が “1つの” システムとして協調動作<br />ホスター<br />パブリック <br />クラウド<br />Secure CloudFederation<br />プライベートクラウド<br />企業内システム<br />
  22. 22. Secure Cloud Federation<br />クラウド<br />オンプレミス<br />データ同期<br />~ SQL Azure Data Sync ~<br />アプリケーション間通信<br />~ AppFabric Service Bus ~<br />今日のテーマ<br />セキュリティ<br />~ AD FS 2.0 & AppFabric ACS ~<br />仮想ネットワーク<br />~ Windows Azure Connect ~<br />
  23. 23. 今何に困っているのか、今後何に困るのか<br />3. アイデンティティ管理の現状と未来<br />
  24. 24. アプリケーションは「アイデンティティ」を求める<br />なぜ? -> アクセスを制御をするため<br />クラウド<br />クラウドも<br />オンプレミスと同様<br />
  25. 25. クラウドサービスのユーザー管理ってどうする?<br /><ul><li>クラウド上ですべて管理すべき?</li></ul>-> リスクは?<br />-> 管理コストは?<br />-> 誰がやる?<br />
  26. 26. 企業内 アイデンティティ管理の現状(中規模以上)<br /><ul><li>メタディレクトリを中心とした アイデンティティ情報の同期
  27. 27. 小さな単位での統合認証</li></ul>AD<br />メタディレクトリ<br />業務<br />同期<br />同期<br />統合認証<br />同期<br />同期<br />Open<br />LDAP<br />業務<br />統合認証<br />
  28. 28. 認証とアクセス制御の現状<br />管理コストとシステム間の不整合<br /><ul><li>パスワードの二重管理
  29. 29. ロールの二重管理</li></ul>パスワード<br />ユーザー 管理簿 with パスワード<br />業務<br />ロール 管理簿<br />連携なし<br />アクセス権 管理簿<br />ディレクトリサービス<br />業務<br />業務<br />ユーザー 管理簿<br />ユーザー 管理簿<br />ロール 管理簿<br />ロール 管理簿<br />アクセス権 管理簿<br />アクセス権 管理簿<br />ロールに矛盾<br />
  30. 30. クラウドもメタディテクトリで管理する?<br /><ul><li>全てのアイデンティティ情報をクラウドで管理
  31. 31. パスワード
  32. 32. メールアドレス
  33. 33. 氏名</li></ul>同期<br />同期<br />同期<br />メタディレクトリ<br />
  34. 34. その結果どうなるか…<br /><ul><li>初期投資の増大
  35. 35. メタディテクトリシステムの導入、構築
  36. 36. オンプレミスと同じリスクをクラウドでも負うことに
  37. 37. メタディレクトリの管理
  38. 38. 同期の不整合への対応</li></ul>こんなはずじゃ…<br />初期費用 増大!<br />管理コスト 増大!<br />…っていうか、管理しきれない…<br />
  39. 39. 予測される アイデンティティ管理/制御の問題点<br />増え続けるクラウドサービス、アプリケーション<br />迅速なアクセス許可/拒否<br />異なる認証方式の相互運用<br />クラウド上に企業用ディレクトリサービスの設置が困難<br /><ul><li>オンプレミスにディレクトリサービスを設置
  40. 40. 認証と認可を分離する
  41. 41. クレーム ベース セキュリティ
  42. 42. アイデンティティ・フェデレーション</li></li></ul><li>クラウドの登場でやっと日の目を見始めたテクノロジー<br />4. アイデンティティ・フェデレーション と クレーム ベース セキュリティ<br />
  43. 43. アイデンティティ・フェデレーション<br /><ul><li>信頼できる認証機関によって認証された デジタルID と、サービス側に登録されている デジタルID を対応付けること
  44. 44. 認証と認可の分離
  45. 45. サービス側では「認証」を行わない</li></ul>認証<br />認可/承認<br />サービスプロバイダーは<br />認証機関を信頼している<br />認証機関<br />サービス<br />プロバイダー<br />何らかの仕組み<br />利用<br />認証<br />Users<br />Users<br />利用者<br />ID と ID を対応付ける<br />
  46. 46. クレーム ベース セキュリティを使用したアイデンティティ・フェデレーション<br /><ul><li>利用者は事前に 「認証機関」で認証を済ませている
  47. 47. 「サービスプロバイダー」のアプリケーションは 「認証機関」が発行したチケットをベースにアクセス権を決定する(再認証は行わない)</li></ul>認証<br />認可/承認<br />サービスプロバイダーは<br />認証機関を信頼している<br />認証機関<br />サービス<br />プロバイダー<br />④アクセス承認<br />①証明依頼<br />③チケット提示<br />チケット<br />②本人証明<br />Users<br />Users<br />利用者<br />ID と ID を対応付ける<br />
  48. 48. 現実世界のクレームベースセキュリティ(例)<br />信頼<br />米国政府<br />日本国政府<br />本人<br /><ul><li>顔
  49. 49. 指紋</li></ul>発行<br />信頼<br />入国<br />出国<br />空港<br />健保番号<br />/免許証番号<br />/住民票<br />ビザ<br /><ul><li>滞在可能期間</li></ul>入国申請書<br /><ul><li>滞在期間
  50. 50. 滞在先</li></ul>パスポート<br /><ul><li>発行国
  51. 51. 氏名
  52. 52. 有効期限
  53. 53. 旅券番号
  54. 54. 写真
  55. 55. 出国印</li></ul>パスポート<br />・<br />・<br />
  56. 56. 現実世界のクレームベースセキュリティ(例)<br />RP/SP<br />IdP/CP<br />信頼<br />米国政府<br />日本国政府<br />オーソリティ<br />(各種機関)<br />オーソリティ<br />(各種機関)<br />セキュリティトークン<br />/アサーション<br />主体<br />本人<br /><ul><li>顔
  57. 57. 指紋</li></ul>発行<br />信頼<br />クレーム<br />クレーム<br />入国<br />出国<br />リソース<br />空港<br />健保番号<br />/免許証番号<br />/住民票<br />ビザ<br /><ul><li>滞在期間</li></ul>クレーム<br />入国申請書<br /><ul><li>滞在期間
  58. 58. 滞在先</li></ul>クレーム<br />署名<br />パスポート<br /><ul><li>発行国
  59. 59. 氏名
  60. 60. 有効期限
  61. 61. 旅券番号
  62. 62. 写真
  63. 63. 出国印</li></ul>クレーム<br />パスポート<br />・<br />・<br />署名<br />
  64. 64. クレーム とは<br />アプリケーションに渡すユーザー自身の属性<br />ユーザーのロールを表現しアクセス承認に使用される<br />ユーザー ID<br />氏名、姓、名<br />資格情報(認証結果)<br />住所<br />メール アドレス<br />性別<br />役職<br />言語<br />所属部門<br />趣味/趣向<br />所属企業<br />会員番号<br />専門分野<br />
  65. 65. セキュリティ トークン/アサーション<br />パッケージ化されたクレーム<br />発行者(オーソリティ)の署名によって信頼性を担保<br />発行者とは事前に信頼関係を結んでおく<br />セキュリティトークン/アサーション<br />クレーム 1<br />クレーム 2<br />クレーム n<br />発行元による<br />署名<br />署名<br />
  66. 66. 現実世界のアイデンティティ・フェデレーション<br />ロール<br /><ul><li>メンバーステータス
  67. 67. 宿泊期間
  68. 68. ルームタイプ
  69. 69. サービス内容</li></ul>RP/SP <br />IdP/CP<br />予約情報<br />アイデンティティを一意に対応付け<br />米国政府<br />日本国政府<br />信頼<br />健保番号<br />/免許証番号<br />/住民票<br />信頼<br />発行<br />信頼<br />セキュリティトークン<br />入国<br />出国<br />パスポート<br />本人<br />メンバーカード<br />空港<br />Reception<br />パスポート<br /><ul><li>発行国
  70. 70. 氏名
  71. 71. 有効期限
  72. 72. 旅券番号
  73. 73. 写真
  74. 74. 出国印</li></ul>ホテル<br />
  75. 75. クレーム ベース セキュリティを使用したアイデンティティ・フェデレーション の流れ<br /><ul><li>利用者は事前に 「CP / IdP」で認証を済ませている
  76. 76. 「RP / SP」側のオーソリティはアプリケーション用にトークンを変換
  77. 77. 「RP / SP」側のアプリケーションは再認証は行わない</li></ul>⑦ID関連付け,ロール決定<br />④ セキュリティトークン変換<br />RPは CP を信頼している<br />CP / IdP<br />RP / SP<br />⑧ アクセス承認<br />セキュリティ<br />トークン<br />⑤新トークン発行<br />①認証/発行依頼<br />③提示<br />各種<br />オーソリティ<br />各種<br />オーソリティ<br />②発行<br />WebApp<br />利用者<br />⑥ 新セキュリティトークン送付<br />RP :Relying Party<br />SP :Service Provider<br />IdP:Identity Provider<br />CP :Claims Provider<br />
  78. 78. CP / IdPと RP / SP 間の信頼関係について<br />「信頼」とは何か?<br />物理的には<br />メタデータ/証明書/暗号化キーを事前に交換<br />お互いの「すり替わり」を防止<br />データの横取りを防止<br />RP / SP<br />CP/ IdP<br />Metadata<br />Metadata<br />信頼<br />URI<br />URI<br />精神的には<br />IdP 側 の アイデンティティ/ロール 管理責任を信頼<br />SP 側の クレーム管理責任を信頼<br />
  79. 79. Claims Provider / Identity Provider<br />ユーザーを認証し身元を証明するセキュリティトークンを発行する<br /><ul><li>セキュリティトークンの発行条件として、認証基盤は規定されていない(製品ベンダーの実装次第)</li></ul>CP / IdP<br />オーソリティ<br />セキュリティ<br />トークン<br />ブラウザ/アプリケーションへ<br />認証<br />ルール実行<br />属性収集<br />ロール決定<br />Active Directory<br />Federation Service2.0<br />Active Directory<br />Federation Service2.0<br />ActiveDirectoryDomain Service<br />
  80. 80. Relying Party/ Service Provider <br />ユーザーの”ロール”を元にサービス利用を認可する<br /><ul><li>WEBアプリが受け入れ可能なセキュリティトークンに変換
  81. 81. WEBアプリはユーザーのロールを確認しアクセス権を決定</li></ul>省略されることもある<br />RP/ SP<br />WEBアプリ<br />オーソリティ<br />新セキュリティトークン<br />ブラウザ/アプリケーション<br />ルール実行<br />アクセス制御<br />属性収集<br />ロール決定<br />Active Directory<br />Federation Service2.0<br />Active Directory<br />Federation Service2.0<br />ブラウザ/アプリケーション<br />
  82. 82. 企業内フェデレーションと企業間フェデレーション<br /><ul><li>CP/IdPから送付されるセキュリティトークンが信頼できる場合には、RP/SP側のオーソリティは省略できる</li></ul>MS<br />社内なのでIdPに一任<br />IdP / CP<br />SP/CP<br /><ul><li>CP/IdPから送付されるセキュリティトークンが(セキュリティや品質の面で)信頼できない場合には、RP/SP側のオーソリティでチェック/変換する</li></ul>企業A<br />MS<br />MSはどうも怪しいので独自にチェック<br />IdP / CP<br />SP/CP<br />
  83. 83. Active DirectoryFederation Service2.0<br />
  84. 84. AD FS 2.0 の役割と目的について<br />5.AD FS2.0 の基礎知識<br />
  85. 85. SSO を実現するための構成要素<br />AD DS<br />認証サーバー<br /><ul><li>ユーザーを認証する
  86. 86. AD FS2.0 サービスを認証する</li></ul>STS( セキュリティトークンサービス )<br /><ul><li>AD認証されたユーザーに対してセキュリティトークンを発行する
  87. 87. アプリケーションにセキュリティトークンを渡す</li></ul>AD FS 2.0<br />クレームストア<br /><ul><li>セキュリティトークンに組み込むユーザー属性が格納されている</li></ul>AD DS/AD LDS<br />SQL Server<br />WS-Federation/WS-Trust に対応したアプリケーション※WIF は(現時点では)SAML2.0 に対応していない<br />WIF<br />
  88. 88. 基本的な構成<br /><ul><li>それぞれの企業にSTSを設置
  89. 89. STS 間でフェデレーション信頼を構築</li></ul>企業A<br />企業B<br />RP/SP<br />IdP/CP<br />AD DS<br />信頼<br />④アクセス<br />AD DS<br />①認証<br />WIF<br />③Token発行<br />AD FS 2.0<br />AD FS 2.0<br />Application<br />②Token発行<br />クレームストア<br />クレーム<br />ストア<br />IdP:Identity Provider<br />CP:Claims Provider<br />RP : Relying Party<br />SP : Service Provider<br />
  90. 90. 基本的な構成~簡易版<br /><ul><li>同一企業内であれば STS は1台で構築可能</li></ul>企業A<br />RP/SP<br />IdP/CP<br />1台のサーバーで構築<br />信頼<br />③アクセス<br />AD DS<br />①認証<br />WIF<br />Application<br />AD FS 2.0<br />②Token発行<br />クレームストア<br />
  91. 91. アプリケーションがクラウドだったら…<br /><ul><li>クラウドアプリでも考え方は変わらない</li></ul>企業A<br />RP/SP<br />IdP/CP<br />1台のサーバーで構築<br />③アクセス<br />AD DS<br />①認証<br />WIF<br />Application<br />AD FS 2.0<br />②Token発行<br />クレームストア<br />
  92. 92. AD FS2.0 関連コンポーネントの配置と役割<br />intranet<br />DMZ<br />ADFSPROXY<br />ADFS<br />AD DS<br />構成DB<br />loadbalance<br />loadbalance<br />認証<br />cluster<br />Internet<br />AD DSor<br />SQL Server or<br />AD LDS<br />STS<br />構成DB<br />R-PROXY<br />クレーム<br />ストア<br />STS : Security Token Services<br />R-PROXY : Reverse Proxy<br />
  93. 93. 6. これから構築する環境<br />
  94. 94. システム構成図<br />システムの特徴<br /><ul><li>AD FS 1台構成
  95. 95. ADFS はCNAMEを使用
  96. 96. 構成DBとして SQL Server を使用</li></ul>Application<br />基本構成情報<br /><ul><li>ドメイン名:tf.com
  97. 97. 管理者 :administrator
  98. 98. 管理者パスワード:P@ssw0rd</li></ul>CName<br />tf20101102-01(tfadfs)<br />tf20101102-03<br />tf20101102-VS<br />Application<br />Application<br />AD FS 2.0<br />WIF SDK<br />SQL 2008R2<br />IIS<br />Azure SDK<br />ADDS<br />IIS<br />Azure Tools<br />DNS<br />VS2010<br />
  99. 99. 手順概要<br /><ul><li>Windows Server 2008 R2 のインストールと構成
  100. 100. ActiveDirectory のインストールと構成
  101. 101. SQL Server のインストール
  102. 102. IIS のインストール
  103. 103. Windows Azureサブスクライブ
  104. 104. AD FS 2.0 展開の準備
  105. 105. AD FS 2.0 のインストールと初期構成
  106. 106. アプリケーションの開発
  107. 107. Windows Azure 上にアプリケーションを展開
  108. 108. クレームルールのカスタマイズ</li></ul>済<br />済<br />済<br />済<br />済<br />構築<br />
  109. 109. 7.AD FS 2.0 展開の準備<br />済<br />AD FS 2.0 用 証明書の準備<br />IIS の SSL を有効化<br />WinSv 2008 R2 のセットアップ<br />Active Directory のセットアップ<br />SQL Server のセットアップ<br />IIS のインストール<br />
  110. 110. AD FS 2.0 に必要な証明書<br /> ⑤AD FS 2.0 用証明書の準備<br /><ul><li>サービス通信証明書(SSL に使用)
  111. 111. AD FS の通信を暗号化するために使用
  112. 112. 既定では IIS の SSL 用証明書が使われる
  113. 113. サブジェクト(主体名)がフェデレーションサービス名と一致していること ※サーバーファーム構成では注意が必要
  114. 114. トークン署名証明書
  115. 115. AD FS が発行するトークンの署名
  116. 116. 公開メタデータの署名
  117. 117. RPから送信されるアーティファクト解決要求の署名
  118. 118. トークン暗号化解除証明書
  119. 119. AD FS が受け取ったトークンの暗号化を解除するために使用
  120. 120. IIS の SSL 証明書が既定の暗号化解除証明書として使用される</li></ul>今回は自己署名証明書を使用します<br />
  121. 121. IIS を使用した自己署名証明書の作成<br /> ⑤AD FS 2.0 用証明書の準備<br />サブジェクト(主体)がホスト名<br />
  122. 122. CNAME を登録<br /> ⑤AD FS 2.0 用証明書の準備<br />tf20101102-01.tf.com<br /> (192.168.100.1)<br />CNAME = tfadfs<br />名前解決<br />SSL証明書の主体名はここ<br />
  123. 123. ⑤AD FS 2.0 用証明書の準備<br />自己署名証明書を作成するツール<br />.NET Framework SDK 内の以下のツールを使用<br /><ul><li>makecert.exe ← サブジェクトを指定できる
  124. 124. pvk2pfx.exe</li></ul>.CER<br />.PFX<br />pvk2pfx<br />makecert<br />.PVK<br />
  125. 125. ⑤AD FS 2.0 用証明書の準備<br />自己署名証明書の作成<br />Visual Studio をインストールしたマシンにログオン<br />[スタート]-[すべてのプログラム]-[Microsoft Visual Studio 2010]-[Visual Studio Tools]-[Visual Studio コマンドプロンプト] を起動<br />証明書(.cer)ファイルとプライベートキーファイル( .pvk)ファイルを作成<br />.pvkと .cerから .pfx ファイルを作成する<br />makecert -r -pe -n "CN=tfadfs.tf.com" <br />-sky exchange “tfadfs.tf.com.cer" <br />-sv“tfadfs.tf.com.pvk"<br />pvk2pfx -pvk“tfadfs.tf.com.pvk“<br /> -spc“tfadfs.tf.com.cer“<br /> -pfx“tfadfs.tf.com.pfx“<br /> -pi <パスワード><br />
  126. 126. ⑥IIS の SSL を有効化<br />[Default Web Site] の SSL を有効にする<br />
  127. 127. ⑥IIS の SSL を有効化<br />接続テスト<br />https://tfadfs.tf.com/<br />
  128. 128. 自己署名証明書の取り込み<br /> ⑥IIS の SSL を有効化<br />
  129. 129. ⑥IIS の SSL を有効化<br />
  130. 130. 8.AD FS 2.0 のインストールと初期構成<br />AD FS 2.0 のインストール<br />AD FS 2.0 初期構成の準備<br />AD FS 2.0 初期構成<br />AD FS 2.0 管理コンソールの確認<br />
  131. 131. ① AD FS 2.0 のインストール<br />AD FS 2.0 のダウンロード<br />Active Directory Federation Services 2.0 RTW - 日本語<br />2008用<br />2008 R2 用<br />
  132. 132. ① AD FS 2.0 のインストール<br />AD FS 2.0 のインストール (1)<br />AdfsSetup.exe を実行<br />
  133. 133. AD FS 2.0 のインストール (2)<br />① AD FS 2.0 のインストール<br />前提条件は自動的に満たしてくれる<br />再起動<br />
  134. 134. AD FS 2.0 初期構成前の準備<br />② AD FS 2.0 初期構成の準備<br />サーバー構成を決めておく<br /><ul><li>スタンドアロン
  135. 135. サーバーファーム</li></ul>構成データベースを決めておく<br /><ul><li>Windows Internal Database
  136. 136. SQLServer</li></ul>サービスアカウントを作成しておく<br />
  137. 137. サーバーファーム と スタンドアロン<br />② AD FS 2.0 初期構成の準備<br />スタンドアロン<br />AD FS サーバー 1台<br />構成DB は WID のみ<br />サーバーファーム<br />AD FS サーバー 複数台を前提とした構成<br />ロードバランスが可能<br />構成DB は WIDor SQL Server(クラスタ可能)<br />(ADFS+WID)*1<br />(ADFS+WID)*1<br />(ADFS+WID)*n<br />ADFS*n + SQL Server<br />
  138. 138. ② AD FS 2.0 初期構成の準備<br />AD FS 2.0 ~ サーバー ファームと構成 DB<br />スタンドアロン+ WID<br />サーバー ファーム+ WID<br /><ul><li>各サーバーが WID を持つ
  139. 139. 5 分に 1 回の更新チェック(各サーバー->プライマリ)
  140. 140. 機能制限が発生
  141. 141. SAMLToken Replay Detection
  142. 142. SAML Artifact Resolution</li></ul>サーバー ファーム+ SQL Server<br /><ul><li>fsconfig.exe コマンドによる構成
  143. 143. WID からの移行は不可
  144. 144. SQL Server は 1 セット
  145. 145. クラスター構成可能</li></ul>低<br />プライマリ<br />可用性<br />ADFS<br />R/W<br />ADFS<br />ADFS<br />R/O<br />R/O<br />セカンダリ<br />セカンダリ<br />高<br />ADFS<br />ADFS<br />ADFS<br />R/W<br />SQL Server<br />WID:Windows Internal Database<br />
  146. 146. 構成データベースによる手順の違い<br />② AD FS 2.0 初期構成の準備<br />使用する構成データベースによって構成手順が異なる<br /><ul><li>Windows Internal Database(WID) -> ウィザード または fsconfigコマンド で構成
  147. 147. SQL Server -> fsconfigコマンド でのみ構成可能</li></ul>一度構成した後で移行することはできないので注意しましょう!<br />WIDが使われる<br />
  148. 148. ② AD FS 2.0 初期構成の準備<br />(参考) Token Replay Attack とは<br />http://msdn.microsoft.com/en-us/library/ee517257.aspx<br />取得済のセキュリティ トークンを再利用してアクセス権を得ようとするアタック<br />キオスク端末等でブラウザーを閉じないと危険<br />ブラウザーの [戻る] でトークン取得ポイントに戻れてしまう<br />WIF には Replay を検出する機能が実装されている<br />Replay 検出は規定でオフ<br />有効にするには DetectReplayedTokens値をtrue<br />
  149. 149. ② AD FS 2.0 初期構成の準備<br />(参考) SAML Artifact Resolution とは<br />Artifact (アーティファクト)<br />セキュリティトークン (SAML Assertion)のリファレンス<br />SSO を実現する トークン受け渡し手順 の 1 つ<br />ブラウザーはトークンではなく、トークンの「Artifact」を STS から受け取り RP にリダイレクトする<br />RP は受け取った Artifact を IdP に提示して正当性を評価<br />評価 OK ならば、RP は IdP から直接トークンを取得する<br /><ul><li>ユーザーとサーバー間の通信帯域が細い場合に有用</li></ul>3<br />2<br />サービス<br />STS<br />1<br />
  150. 150. AD FS 用サービスアカウントの作成<br />② AD FS 2.0 初期構成の準備<br />AD FS が使用するサービスアカウント<br />サーバーファーム(複数のAD FS サービス)で共有するためドメインユーザーアカウントとして作成する<br />スタンドアロンの場合には Network Service アカウントが使用される<br />管理者権限は(必ずしも)必要ない<br />管理者権限(servicePrincipalNameの書き込み権限)が無い場合 SPN の自動登録に失敗する(後述)<br />作成例<br />
  151. 151. ③ AD FS 2.0 初期構成<br />インストール直後の管理コンソール<br />ちょっとまった!<br />脊髄クリック注意!!<br />
  152. 152. 1台目のAD FS~ 環境構成ウィザード編 (1)<br />③ AD FS 2.0 初期構成<br />
  153. 153. 1台目のAD FS~ 環境構成ウィザード編 (2)<br />③ AD FS 2.0 初期構成<br />事前に取り込んでおいた証明書が表示される<br />事前に作成しておいたサービスアカウント<br />(注意)<br />サービスアカウントの入力が求められるのは「サーバーファーム」を選択した場合<br />
  154. 154. ③ AD FS 2.0 初期構成<br />サービス名をチェック<br />これがAD FS のエンドポイントの一部になります<br />
  155. 155. ③ AD FS 2.0 初期構成<br />1台目の AD FS~ 環境構成ウィザード編 (3)<br />サービスアカウントに指定したユーザーが管理者権限を持っていない場合に発生する<br />
  156. 156. ③ AD FS 2.0 初期構成<br />SPN(Service Principal Name)とは?<br /><ul><li>サービスのインスタンスを正確に識別するための ID(乗っ取りを回避)
  157. 157. Kerberos でサービスの認証に使用される
  158. 158. 登録するには管理者権限が必要
  159. 159. ドメイン内に同じ SPN は登録できない</li></ul>SPN チェック<br />SPNを送付<br />KDC<br />SPN<br />AD DS<br />kerberos チケットを発行<br />チケット送付<br />AD FS 2.0サービス<br />(adfssrv)<br />サービス<br />アカウント<br />サービス認証<br />(参考)認証のためのサービスID<br />http://msdn.microsoft.com/ja-jp/library/ms733130(VS.85).aspx<br />
  160. 160. ③ AD FS 2.0 初期構成<br />SPN を手動で登録する<br />setspn -a host/adfssrv <ドメイン名><サービスアカウント名><br />(例)setspn-a host/adfssrvtfadfssvc<br />
  161. 161. AD FS 2.0 を構成するファイルと設定情報<br />③ AD FS 2.0 初期構成<br />SF : Server Farm<br />
  162. 162. AD FS 2.0 をアンインストールするには<br />③ AD FS 2.0 初期構成<br />(参考)http://blogs.technet.com/b/junichia/archive/2010/07/28/3347209.aspx<br />証明書共有コンテナを削除(PowerShell を使用)ADSI Edit を起動し、「既定の名前付きコンテキスト」に接続し、CertificateSharingContainerの値と一致するコンテナを削除する。<br />AD FS 2.0(KB974408)を削除<br />WIF ランライム(KB974405)を削除<br />WID または SQL Server の当該インスタンス(もしくはデータベースのみ)を削除<br />IIS 上のアプリケーションとアプリケーションプール、ファイル群を削除<br />SPN を削除サービスアカウントの servicePrincipalName属性から「hostadfssrv」を削除<br />PS C:>Add-PsSnapin Microsoft.Adfs.Powershell<br />PS C:>Get-ADFSProperties |Select-Object CertificateSharingContainer<br />CertificateSharingContainer--------------------------- CN=0586a130-89fa-40e8-8896-18ece4d171e7,CN=ADFS,CN=Microsoft,CN=Program Data,DC=T3304,DC=com <br />再構成だけしたい場合は↑↓を実施<br />C:setspn -d host/adfssrv<ADFS サーバーのホスト名><br />
  163. 163. WID の管理方法<br />③ AD FS 2.0 初期構成<br />SQL Server Management Studio Express を使用<br />サーバー名は.pipemssql$microsoft##sseesqlquery<br />ADFS 2.0 用 DB<br />
  164. 164. 1台目のAD FS~ fsconfigコマンド編(SQL Server を使用)<br />③ AD FS 2.0 初期構成<br />書式<br />FSConfig.exe CreateSQLFarm<br />/ServiceAccount <ドメイン名><サービスアカウント名> <br />/ServiceAccountPassword <サービスアカウントのパスワード> <br />/SQLConnectionString“database=<構成DB名> ;server=<SQL Server のサーバー名><インスタンス名> ;integrated security=SSPI" <br />/AutoCertRolloverEnabled<br />/CleanConfig<br />既定の名前は AdfsConfiguration<br />既定のインスタンス(MSSQLSERVER)ならば指定しなくてもよい<br />
  165. 165. ③ AD FS 2.0 初期構成<br />入力例<br />AD FS 2.0 のインストールディレクトリに移動<br />C:> cd C:Program FilesActive Directory Federation Services 2.0 <br />CreateSQLFarm オプションを指定して実行<br />C:……>FSConfig.exe CreateSQLFarm /ServiceAccountTFadfssvc /ServiceAccountPassword P@ssw0rd /SQLConnectionString“<br />database=AdfsConfiguration ;server=TF20101102-03 ;integrated security=SSPI" /AutoCertRolloverEnabled<br />/CleanConfig<br />
  166. 166. ③ AD FS 2.0 初期構成<br />対応を忘れずに!<br />IIS上のアプリケーションを削除していない場合に出力される<br />
  167. 167. ④AD FS 2.0 管理コンソールの確認<br />AD FS 2.0 管理コンソールの基礎<br />この AD FS 2.0(STS)で扱うことができるクレームが定義されている。逆に言えばここに定義されていないクレームを使うことはできない。先方から要求されているクレームは個々に定義する。<br />「要求プロバイダー」とは「IdP/CP」のこと。自分が RP/SP 側の STS である場合には、ここに IdP/CP となるサーバーを定義する。既定では自身が所属している Active Directory ドメインが定義されている(「要求プロバイダーであること」が規定値となっている)。<br />「証明書利用者」とは「RP/SP」のこと。自分がIdP/CP 側の STS である場合には、ここに RP/SP を定義することで信頼関係を構築できる。既定では何も定義されていない。<br />クレームのもととなる属性情報の格納庫を定義する。既定では、所属している Active Directory が定義されている。<br />
  168. 168. ④AD FS 2.0 管理コンソールの確認<br />AD FS 2.0 管理コンソールの基礎要求記述<br /><ul><li>システム間で送受信するクレームタイプが定義されている
  169. 169. ここに定義されていないクレームは、要求規則テンプレートで使用することができない(カスタムルールでは独自に作成可能)</li></ul>このクレームを外部から受信可能か否か、外部に送信可能か否かを定義<br />ワールドワイドで一意なクレームの名前(だから URI で書かれている)。<br />これを使ってクレームが識別される。<br />あくまでも識別名としての「名前」。このSTS内部だけで通用する。<br />
  170. 170. ④AD FS 2.0 管理コンソールの確認<br />(参考)既定のクレーム タイプ<br />
  171. 171. ④AD FS 2.0 管理コンソールの確認<br />
  172. 172. 9.Windows Server と Windows Azure の違い<br />
  173. 173. Windows AzurePlatform の位置づけ<br />
  174. 174. *aaS の違い<br />App<br />App<br />App<br />IaaS<br />PaaS<br />App<br />Platform<br />Platform<br />Platform<br />Platform<br />Platform<br />オンプレミス<br />オンプレミス<br />Infrastructure<br />Infrastructure<br />Infrastructure<br />Infrastructure<br />Infrastructure<br />SaaS<br />Infrastructure<br />オンプレミス<br />
  175. 175. Windows AzurePlatform<br />Web Role<br />Worker Role<br />VM Role<br />Windows Azure Platform<br />Windows Azure<br />コンピュート<br />ストレージ<br />ファブリック<br />ブロブ<br />テーブル<br />キュー<br />SQL Azure<br />WindowsAzure AppFabric<br />Service Bus<br />Access Control Service<br />WindowsAzure Marketplace<br />DataMarket<br />Applications<br />
  176. 176. マイクロソフトデータセンター用の Windows Server<br />Node 用のOS<br />PXEBoot用OS<br />ゲストOSに<br />使用される<br />ゲストOSに<br />使用される<br />Rack<br />FabricController<br />Windows Azure<br />ImageStore<br />Maintenance<br />OS<br />Worker<br />Role<br />Windows Azure OS<br />Web<br />Role<br />展開・監視<br />ComputeNode<br />StorageNode<br />StorageNode<br />ComputeNode<br />
  177. 177. Windows Azure の展開<br />マイクロソフトデータセンター用の Windows Server<br />Node 用のOS<br />PXEBoot用OS<br />ゲストOSに<br />使用される<br />ゲストOSに<br />使用される<br />Rack<br />FabricController<br />ImageStore<br />Maintenance<br />OS<br />Worker<br />Role<br />Windows Azure OS<br />Web<br />Role<br /><ul><li>Node を展開
  178. 178. RootVMを展開/監視</li></ul>ComputeNode<br />RootVM<br />GuestVM<br />GuestVM<br /><ul><li>Guest Agent をインストール
  179. 179. Guest VM を監視する</li></ul>GuestAgent<br />GuestAgent<br />Fabric Agent<br />Windows AzureHypervisor<br />Windows AzureOS(VHDboot)<br />
  180. 180. ロール<br /><ul><li>ゲストOS に与える役割
  181. 181. Web ロール - フロントWEBサービスに最適化されている
  182. 182. Worker ロール - バックエンドサービスに最適化されている
  183. 183. VM ロール- 利用者によりカスタマイズが可能</li></ul>Web ロール<br />Worker ロール<br />フロントエンド<br />Web サービス<br />バックエンド<br />サービス<br />xxx.cloudapp.net<br />
  184. 184. アプリケーション展開までの流れ<br />Windows Server の場合<br />Application<br />手動<br />Windows Server<br />Windows Server<br />IIS<br />IIS<br />手動<br />Server(H/W)<br />Server(H/W)<br />Server(H/W)<br />手動<br />Windows Azure (PaaS)の場合<br />Application<br />手動<br />「サービスのURL」が<br />DNS に登録される<br />Windows Server<br />IIS<br />自動<br />PaaSなので、OSをインストールするというプロセスが存在しない<br />Hyper-V<br />Server(H/W)<br />サービスを作成<br />アプリケーションを展開<br />
  185. 185. Windows Azure VM のスケーラビリティ<br />価格は2011年5月現在<br />サブスクリプションあたり<br />最大20インスタンス<br />UP<br />OUT<br />インスタンス数<br />
  186. 186. スケールアウトとスケールイン<br />負荷に応じてインスタンス数を調整できる<br />インスタンスの増減はユーザーに影響しない<br />ロール<br />インスタンス<br />Application<br />Application<br />Application<br />Application<br />Application<br />Application<br />Windows Server<br />Windows Server<br />Windows Server<br />Windows Server<br />Windows Server<br />Windows Server<br />IIS<br />IIS<br />IIS<br />IIS<br />IIS<br />IIS<br />xxx.cloudapp.net<br />WindowsAzure DataCenter<br />
  187. 187. アップグレード ~ Inーplace Update 方式<br />Update Domain 単位でアップデートする<br />利用者には影響を与えない<br />自動更新(パッチ適用)時にも同じ方式が適用される<br />Update Domain #0<br />アップデート<br />1<br />Update Domain #1<br />アップデート<br />2<br />新環境<br />アップデート<br />3<br />Update Domain #2<br />xxx.cloudapp.net<br />4<br />アップデート<br />Update Domain #3<br />5<br />アップデート<br />1<br />Update Domain #4<br />アップデート<br />Update Domain #0<br />Update Domain は最大5つ<br />
  188. 188. アップグレード ~ VIP Swap 方式<br />ステージング環境とプロダクション環境の仮想IPを入れ替える<br />短時間での展開<br />容易なロールバック(やりなおし)<br />xxx.xxx.xxx.xxx<br />プロダクション<br />xxx.cloudapp.net<br />ステージング<br />xxxx.hogehoge.net<br />zzz.zzz.zzz.zzz<br />
  189. 189. ハードウェア障害の影響<br />Fault Domain<br />Cluster<br />Top of Rack Switches<br />Fabric Controller<br />Node<br />Node<br />Node<br />Node<br />Node<br />xxx.cloudapp.net<br />Node<br />Node<br />Node<br />Power Definition Unit<br />Rack<br />Rack<br />Rack<br />Rack<br />
  190. 190. Fault Domain<br /><ul><li>物理的な障害の単位(≒ ラック)
  191. 191. ファブリック コントローラー
  192. 192. 電源ユニット
  193. 193. スイッチ等
  194. 194. ハード障害がサービス全体に及ばないための機構
  195. 195. Windows Azure ファブリックは、ロールインスタンス群を最低 2つの異なる Fault Domainに分散配置する
  196. 196. ホストコンピューターのメンテナンス単位
  197. 197. 緊急度の高い障害修正
  198. 198. 緊急度の高いセキュリティパッチ
  199. 199. どの Fault Domain に所属するかは制御できない</li></li></ul><li>ローカルストレージ<br /><ul><li>Windows Azure のローカルストレージは 非永続的である</li></ul>いつ消えるかわからない<br />という意味<br />ゲスト(仮想マシン)<br />C:<br />Application<br /><ul><li>展開したパッケージファイル</li></ul>VHD<br />Windows Server<br />IIS<br /><ul><li>構成情報、ページングファイル
  200. 200. Visual Studioで設定したアプリ用のローカルストレージ</li></ul>D:<br />VHD<br />E:<br />ホスト(物理マシン)<br />Hyper-V<br /><ul><li>OS 本体</li></ul>Server<br />VHD<br />Windows Azure<br />Reboot :再起動<br />ReImage:アプリケーションの再展開<br />リセット:差分VHDの削除<br />
  201. 201. Windows Azure と Windows Server の違い<br />ローカルストレージリセットのタイミング<br />Reboot と ReImage(再展開)はシステム管理者の指示以外でも発生する<br />
  202. 202. Windows Azure と Windows Server の違い<br />永続ストレージ<br />残したいデータは永続ストレージに保存する<br />Windows AzureStorage<br />SQL Azure<br />REST API<br />ゲスト(仮想マシン)<br />http/https<br />Application<br />Windows Server<br />IIS<br />port 1433<br />WindowsAzure<br />Storage<br />ホスト(物理マシン)<br />SQL<br />Azure<br />Hyper-V<br />Server<br />Windows Azure<br />
  203. 203. Windows Azure Storage へのアクセス<br />計算ノードとストレージノードは分離されている<br />Storage Node<br />Compute Node<br />Container<br />Guest OS<br />REST API<br />.NET<br />Application<br />Query<br />URL<br />操作<br />操作<br />Read/Write<br />有効時間<br />署名<br />SAK<br />config<br />SAK: Storage Account Key<br />
  204. 204. IT Pro と開発者の役割分担<br />アプリケーションの動作に必要な設定やファイルは、         スクリプトに埋め込んで展開する必要がある<br />基本的に Visual Studio で設定<br />プログラム本体<br />Windows Azure<br />サービス構成ファイル<br />.csdef / .cscfg<br />Application<br />Windows Server<br />IIS<br />スタートアップタスク<br />OS 起動時に実行されるスクリプト<br /><ul><li>ファイルのコピー
  205. 205. ライブラリのインストール
  206. 206. レジストリの修正</li></ul>などなど<br />Hyper-V<br />Server<br />個別ファイル<br />スタートアップスクリプト等で使用するファイル<br />
  207. 207. 10.Windows Azure の準備<br />サービスを作成<br />自己署名証明書の登録<br />
  208. 208. ② サービスの作成<br />サービスの新規作成<br />Windows Azure ポータル に移動<br />http://windows.azure.com/<br />
  209. 209. ② サービスの新規作成<br />サービスのURLを設定する<br />識別名なので何でもよい<br />アプリケーションのURL<br />世界で唯一である必要がある<br />アプリケーションを展開するデータセンター<br />同時にアプリケーションを展開することもできるが、今回はまだ作成していないので「展開しない」を選択<br />
  210. 210. ② サービスの新規作成<br />サービスの初期状態<br />「URL」を確定しただけなので、まだ OS は展開されていない<br />
  211. 211. ③ 自己署名証明書の準備<br />Windows Azure で使用する証明書とは<br />参考<br />http://blogs.technet.com/b/junichia/archive/2010/09/02/3353275.aspx<br />サブスクリプション証明書(.cer)<br />クライアント証明書<br />サービス管理 API(SMAPI)へのアクセスに使用<br />X.509 V3(.CER)に対応し、最低 2048 bit キー を持っている<br />サービス証明書(.pfx)<br />サービスへの SSL 通信に使用<br />thumbprint によってアプリケーションと対応付け<br />いずれも自己署名証明書を利用可能<br />
  212. 212. ③ 自己署名証明書の準備<br />証明書の登録場所<br />サブスクリプション<br />サブスクリプション<br />証明書(.cer)<br />アカウント<br />import<br />サービス<br />tf20110311.cloudapp.net<br />サービス証明書<br />(.pfx)<br />import<br />サービス<br />xxxx.cloudapp.net<br />サービス証明書<br />(.pfx)<br />import<br />サービス<br />yyyy.cloudapp.net<br />サービス証明書<br />(.pfx)<br />import<br />
  213. 213. ③ 自己署名証明書の準備<br />[FAQ] 証明書の「主体(Subject)」について<br />http://blogs.technet.com/b/junichia/archive/2010/09/03/3353536.aspx<br />Windows Azure 上に展開されるアプリケーションの FQDN は…<br /> xxxxxxxx.cloudapp.net<br />マイクロソフト所有のドメイン…<br />ということは…<br />xxxxxxxx.cloudapp.net で<br />証明書を取得することはできない<br />CNAME を使用して証明書を取得する必要がある<br />※今回は自己署名証明書を使用します<br />
  214. 214. ③ 自己署名証明書の準備<br />自己署名証明書の作成<br />Visual Studio をインストールしたマシンにログオン<br />[スタート]-[すべてのプログラム]-[Microsoft Visual Studio 2010]-[Visual Studio Tools]-[Visual Studio コマンドプロンプト] を起動<br />証明書(.cer)ファイルとプライベートキーファイル( .pvk)ファイルを作成<br />.pvkと .cerから .pfx ファイルを作成する<br />.cerと .pfxファイルを Windows Azure にインポートする<br />makecert -r -pe -n "CN=tf01.cloudapp.net" <br />-sky exchange “tf01.cloudapp.net.cer" <br />-sv“tf01.cloudapp.net.pvk"<br />pvk2pfx -pvk "sydneytest.cloudapp.net.pvk“<br />-spc“tf01.cloudapp.net.cer“<br />-pfx“tf01.cloudapp.net.pfx“<br />-pi <パスワード><br />
  215. 215. ③ 自己署名証明書の準備<br />サブスクリプション証明書の登録(.cer)<br />
  216. 216. 11. クレーム対応アプリケーションとは<br />
  217. 217. クレーム対応アプリケーションとは<br />「認証の分離」とその限界<br />多くのアプリケーションが「認証」を分離してきたが…<br />アプリケーション<br />これまでの方式<br />認証<br />ロール<br />サービス<br />アプリケーション<br />認証<br />ロール<br />サービス<br />認証<br />
  218. 218. クレーム対応アプリケーションとは<br />「認証分離」の限界<br /><ul><li>認証プロトコルの違い
  219. 219. Identity 管理ポリシーの違い
  220. 220. アプリケーション側の対応
  221. 221. Single Sign-On/Off への適用</li></ul>Active <br />Directory<br />アプリ1<br />プロトコル<br />情報の整形<br />情報の解釈<br />情報<br />プロトコル<br />強い絆<br />情報<br />情報<br />強い絆<br />強い絆<br />アプリ2<br />OpenLDAP<br />プロトコル<br />情報の整形<br />プロトコル<br />情報の解釈<br />情報<br />強い絆<br />情報<br />情報<br />
  222. 222. クレーム対応アプリケーションとは<br />解決への考察<br /><ul><li>フェデレーション信頼による素結合
  223. 223. STS によりアプリケーション側の処理を削減
  224. 224. 情報はセキュリティトークンに格納して受け渡し</li></ul>STS<br />STS<br />Active <br />Directory<br />アプリ1<br />プロトコル<br />情報の整形<br />情報の解釈<br />プロトコル<br />情報<br />プロトコル<br />フェデレーション信頼<br />情報<br />情報<br />STS<br />アプリ2<br />OpenLDAP<br />STS<br />プロトコル<br />プロトコル<br />プロトコル<br />情報の整形<br />情報の解釈<br />情報<br />情報<br />情報<br />
  225. 225. クレーム対応アプリケーションとは<br />ADFS2.0 と WIF の役割<br /><ul><li>AD FS 2.0 がユーザーのロールを管理
  226. 226. アプリケーションは受け取ったロールを解釈するだけ</li></ul>WIF<br />AD FS 2.0<br />STS<br />STS<br />Active <br />Directory<br />アプリ1<br />プロトコル<br />情報の整形<br />情報の解釈<br />プロトコル<br />情報<br />プロトコル<br />信頼<br />情報<br />情報<br />WIF:Windows Identity Foundation<br />
  227. 227. クレーム対応アプリケーションとは<br />認証/ロール管理からの分離<br />アプリケーション<br />これまでの方式<br />認証<br />ロール<br />サービス<br />アプリケーション<br />認証<br />ロール<br />サービス<br />認証<br />セキュリティ<br />トークン<br />アプリケーション<br />クレームに対応<br />認証<br />クレーム<br />クレーム解釈<br />サービス<br />クレーム<br />認証<br />
  228. 228. クレーム対応アプリケーションとは<br />WIF アプリケーションの構造<br />WIF (Windows Identity Foundation) を使用してセキュリティー トークンからクレームを取り出す<br />WIF は WS-Federation/WS-Trustをサポート<br />ロールは既にトークンにセットされているので評価するだけでOK<br />AD FS 2.0<br />ASP.NET<br />クレームの評価<br />トークン<br />ロール判定<br />Windows Identity Foundation<br />各種処理<br />.NET Framework 4<br />ブラウザー<br />
  229. 229. クレーム対応アプリケーションとは<br />クレームの構造と識別方法<br />Microsoft.IdentityModel.Claims<br />http://msdn.microsoft.com/ja-jp/library/microsoft.identitymodel.claims.aspx<br />これらの値で<br />クレームを識別する<br />Claims<br />ClaimType<br />Claim<br />Value<br />Claim<br />Claim<br />Issuer<br />Claim<br />OriginalIssuer<br />ValueType<br />subject<br />
  230. 230. クレーム対応アプリケーションとは<br />サポートされているプロトコルとトークン形式<br />AD FS 2.0 <br />WIF<br />パッシブ SAML WebSSO<br />SAML 2.0 トークン<br />パッシブ WS-Federation<br />SAML1.1 トークン<br />アクティブ WS-Trust (CardSpace 対応含む)<br />SAML 2.0トークン<br />SAML 1.1 トークン<br />
  231. 231. 12. クレーム対応アプリケーションの作成<br />開発環境の準備<br />アプリケーションの作成<br />
  232. 232. 事前にインストールしておくもの<br />① 開発環境の準備<br />Windows 7 + Visual Studio 2010(Expressも可)の場合<br />WindowsAzure Tools for Microsoft Visual Studio 1.4(2011年3月)<br />VSCloudService.exe<br />VSCloudService.VS100.ja-jp.msi (言語パック)<br />※Windows Azure SDK1.4 も一緒にインストールされます<br />Windows Identity Foundation 3.5 ランタイム 日本語版(KB974495)<br />Windows6.1-KB974405-x64j.msu<br />Windows Identity Foundation 3.5 日本語版<br />WindowsIdentityFoundation-SDK-3.5.msi<br />Windows Identity Foundation 4.0 英語版<br />WindowsIdentityFoundation-SDK-4.0.msi<br />Microsoft CAPICOM 2.1.0.2 SDK※自己署名証明書を作成する場合に必要<br />
  233. 233. WIF対応アプリケーション用テンプレートを複製<br />① 開発環境の準備<br />%Program Files(x86)%Windows Identity Foundation SDKv4.0Visual Studio Extensions10.0<br />├ csClaimsAwareASPNETSite.zip<br />├ csClaimsAwareWCFSite.zip<br />├ csSTSASPNETSite.zip<br />└ csSTSWCFSite.zip<br />コピー<br /><マイドキュメント>Visual Studio 2010TemplatesProject TemplatesVisual C#<br />WIF を使用するための<br />テンプレートが追加される<br />
  234. 234. ② アプリケーションの作成<br />管理者として VSを実行<br />OR<br />
  235. 235. ② アプリケーションの作成<br />テンプレートの選択<br />
  236. 236. ② アプリケーションの作成<br />ロールの指定<br />ワーカーロールとWebロールの違いについての詳細は以下を参照<br />Windows Azure Platform の概要<br />http://technet.microsoft.com/ja-jp/cloud/gg236628.aspx<br />
  237. 237. ② アプリケーションの作成<br />Windows Identity Foundation の参照追加<br />.NET から Microsoft.IdentityModel を追加する<br />
  238. 238. ② アプリケーションの作成<br />Microsoft.IdentityModel モジュールの複製設定<br />Windows Azure で用意されている Windows Server には WIF がインストールされていない。そこで、Microsoft.IdentityModel をAzure 上でも使用できるよう、パッケージの中に組み込んでおく必要がある。<br />一緒にアップロード<br />パッケージ<br />Microsoft.IdentityModel<br />
  239. 239. ② アプリケーションの作成<br />SSL の設定とは<br />SSL を使用する場合には、サービス証明書へのポインター(Thumprint)を<br />Visual Studio 側に設定しておく必要がある<br />
  240. 240. ② アプリケーションの作成<br />SSLの設定 ①<br />
  241. 241. ② アプリケーションの作成<br />SSLの設定 ②<br />識別名なので何でもよい<br />このまま<br />サービス証明書の Thumbprint<br />HTTPS/443 を選択<br />証明書の識別名を<br />選択<br />
  242. 242. ② アプリケーションの作成<br />STS 参照の追加 とは<br />アプリケーションにSTS(セキュリティ トークン サービス)のメタデータを取り込むことで、信頼関係を確立する<br />サービス提供<br />信頼<br />取り込む<br />認証機関<br />AD FS 2.0<br />
  243. 243. ② アプリケーションの作成<br />STS 参照の追加 ①<br />AzureアプリのURLを指定する<br />
  244. 244. ② アプリケーションの作成<br />STS 参照の追加 ②<br />「既存のSTSを使う」に AD FS 2.0 のメタデータを指定する<br />指定するのはCNAMEを使用したホスト名 https://tfadfs.tf.com/~<br />「https://tfadfs.tf.com/」まで入力してクリックすると自動的に補完<br />
  245. 245. ② アプリケーションの作成<br />STS 参照の追加 ③<br />今回は自己発行証明書なので「チェックしない」<br />
  246. 246. ② アプリケーションの作成<br />STS 参照の追加 ④<br />IIS のSSL証明書が使われる<br />
  247. 247. ② アプリケーションの作成<br />STS 参照の追加 ⑤<br />AD FS 2.0 のメタデータに記載されている、「必須な」「使用可能な」<br />クレームタイプの一覧が表示される<br />AD FS 2.0 で用意された<br />FederationMetadata.xml(抜粋)<br />AD FS 側の都合で変更される可能性がある<br />
  248. 248. ② アプリケーションの作成<br />STS 参照の追加 ⑥<br />AD FS 2.0 のメタデータを定期的に取り込むかどうかを指定する<br />
  249. 249. ② アプリケーションの作成<br />STS 参照の追加 ⑦<br />STS参照追加後のプロジェクト<br />アプリ自身のメタデータが生成される<br />AD FS 2.0 側に取り込む必要がある<br />※AD FS 2.0 のメタデータではない<br />取り込んだ AD FS 2.0 用メタデータをもとに、<br />AD FS 2.0 と通信し認証/承認 するための定義が大量に追記されている<br />
  250. 250. ② アプリケーションの作成<br />Web.configの編集 ①<br /><system.web> は複数存在するので、挿入場所に注意してください<br /><configuration><br /> <system.web> <br />  <customErrors mode=“off” /><br />  <httpRuntimerequestValidiationMode=“2.0” /><br />
  251. 251. ② アプリケーションの作成<br />Web.configの編集 ②<br />Azure にアップロードした サービス証明書の Thumbprint を追記する<br /><serviceCertificate><br /><certificateReference x509FindType="FindByThumbprint" findValue=“<THUMBPRINT>"/><br /></serviceCertificate><br />
  252. 252. ② アプリケーションの作成<br />コーディング<br />…面倒なので作ってあります<br />以下からダウンロードできます…<br />http://blogs.technet.com/b/junichia/archive/2011/03/08/3392241.aspx<br />証明書の設定、STS参照の追加 だけ行ってください<br />
  253. 253. 13. アプリケーションをAzureに展開<br />[解説]アプリケーションの発行方法について<br />サービスパッケージを作成<br />サービスパッケージをアップロード<br />メタデータへの接続を確認<br />
  254. 254. ① アプリケーションの発行方法について<br />アプリケーションの発行方法について<br />今回はこちらの<br />方法を使用する<br />2通りの発行方法<br /><ul><li>Visual Studio から直接発行する
  255. 255. パッケージファイルを保存して、ポータルサイトからアップする</li></ul>直接発行<br />アップロードして展開<br />ここまでは<br />開発者の仕事<br />展開するのはITPROの仕事<br />サービスパッケージを作成<br />.cspkg<br />.cscfg<br />Windows Azure Portal<br />
  256. 256. ② サービスパッケージを作成<br />サービスパッケージを作成 (1)<br />IIS への発行とは少し異なります<br />インフラ担当者は、今後パッケージの展開を依頼されることがあるはずです<br />その場合にはこの方法を使用します。<br />
  257. 257. ② サービスパッケージを作成<br />サービスパッケージを作成 (2)<br />コンパイルが完了するとエクスプローラーが開かれる<br />この2つのファイルを<br />アップロードする<br />
  258. 258. ③ サービスパッケージをアップロード<br />サービスパッケージをアップロード (1)<br />
  259. 259. ③ サービスパッケージをアップロード<br />サービスパッケージをアップロード (2)<br />ロールインスタンスが1つの場合に出るワーニング<br />
  260. 260. ③ サービスパッケージをアップロード<br />サービスパッケージをアップロード (3)<br />
  261. 261. ③ サービスパッケージをアップロード<br />サービスパッケージをアップロード (4)<br />URLはHTTPであることに注意<br />
  262. 262. メタデータへの接続を確認<br />アップロードが完了してステータスが「Ready」になったら、以下に接続して表示されることを確認してみましょう。<br />https://tf01.cloudapp.net/FederationMetadata/2007-06/FederationMetadata.xml<br />
  263. 263. 14.AD FS 2.0 への登録<br />AD FS 2.0 への登録<br />動作確認<br />
  264. 264. ① AD FS への登録<br />AD FS 2.0 への 登録 とは<br />アプリケーションのメタデータをAD FS 2.0 に登録することで、セキュリティトークンの発行を許可する<br />サービス提供<br />信頼<br />取り込む<br />認証機関<br />AD FS 2.0<br />
  265. 265. AD FS 2.0 への登録 (1)<br />① AD FS への登録<br />今度は WindowsAzure に展開したアプリケーションを、AD FS 2.0 に登録します。<br />前ページのメタデータ<br />のURLを指定する<br />
  266. 266. ① AD FS への登録<br />AD FS 2.0 への登録 (2)<br />見分けがつきやすい表示名を指定する<br />
  267. 267. ① AD FS への登録<br />AD FS 2.0 への登録 (3)<br />
  268. 268. ② 動作確認<br />実行テスト<br />https://tf01.cloudapp.net/<br />
  269. 269. もし認証ダイアログが表示されたら<br />② 動作確認<br />参考サイト<br />http://blogs.technet.com/b/junichia/archive/2011/01/18/3380918.aspx<br />原因<br /><ul><li>ADFS サーバーが IE のイントラネットゾーンとして認識されておらず現在のクレデンシャル(資格情報)が別のゾーンに構成されている </li></ul>チェックポイント①<br /><ul><li>イントラネットゾーンの設定で「イントラネットゾーンでのみ自動ログオンする」が選択されていることを確認</li></li></ul><li>② 動作確認<br />チェックポイント②<br /><ul><li>「ローカルイントラネット」ゾーンに、ADFS の FQDN を追記する</li></li></ul><li>② 動作確認<br />アイデンティティフェデレーションを使用した  認証から承認までの流れ(Passive Web SSO の場合)<br />6<br />AD DS : Active Directory Domain Service<br />AD FS :Active Directory Federation Service<br />WIF : Windows Identity Foundation<br />WIF<br />信頼<br />クラウド(SP/RP)<br />オンプレミス(IdP/CP)<br />1<br />7<br />2<br />4<br />3<br />5<br />AD DS<br />AD FS 2.0<br />IE7以降<br />
  270. 270. ② 動作確認<br />Passive Web SSO の流れ<br />ブラウザを使用してアプリケーションにアクセス<br />アプリケーションが信頼している CPにリダイレクト<br />セキュリティトークン発行のために CP 側 で認証<br />認証が完了するとクレームが収集され、ルールにのっとってロールを決定後、セキュリティトークンが生成される<br />セキュリティトークンはブラウザーが送られ、ブラウザからアプリケーションにリダイレクト<br />セキュリティトークンがアプリケーション内で解析され、ユーザーのアクセス権が決定<br />アプリケーションの画面がブラウザに送信<br />
  271. 271. AD FS2.0 をもっと使いこなすために<br />15.AD FS2.0Deep Dive<br />クレームパイプラインと要求規則(クレームルール)<br />要求規則の定義例<br />カスタムルールの定義例<br />AD FS 2.0 の監査<br />
  272. 272. AD FS 2.0Deep Dive<br />クレームパイプラインと要求規則(クレームルール)<br />
  273. 273. 用語について<br />基本的に、日本語 UI に沿った用語を使用します。<br />が…ちょっとアレなところもあるので、以下の対応票を参考にしてください。<br />
  274. 274. クレームパイプラインと要求規則(クレームルール)<br />要求規則 (Claim Rule)<br />入力された情報をルール (規則) に沿って処理し出力する<br />処理されたクレームは既定のパイプラインを通る<br />要求規則<br />入力方向の要求<br />他の要求<br />プロバイダー<br />スルー<br />LDAP 属性<br />変換<br />出力<br />AD DS<br />AD LDS<br />LDAP<br />メンバーシップ<br />フィルター<br />SQL Server<br />その他<br />カスタム クレーム<br />
  275. 275. クレームパイプラインと要求規則(クレームルール)<br />要求規則セット (Claim Rule Set) のタイプ<br />受け付け変換規則 - Acceptance Transform Rule Set要求プロバイダー ー(AD DS, SQL Server, LDAP) から受け入れるクレーム セット<br />発行承認規則 - Issuance Authorization Rule Set証明書利用者 (RP) にアクセス可能なユーザーを明確にするためのルール。許可されたユーザーは「発行変換規則」からクレームを受け取れるため、証明書利用者へのアクセスが可能になる。<br />発行変換規則 - Issuance Transform Rule Set「受け付け要求規則」から発行されたクレーム セットを入力とし、証明書利用者 (RP) に発行するクレームを生成する<br />委任承認規則 - Delegation Authorization Rule Set他のユーザーの代理として証明書利用者 (RP) にアクセスできるかどうかを判断するためのルール<br />偽装承認規則 - Impersonate Authorization Rule Setユーザーが他のユーザーを偽装してアクセスできるかどうかを判断するためのルール。WindowsPowerShell で実装する。<br />
  276. 276. クレームパイプラインと要求規則(クレームルール)<br />AD FS 2.0 ~クレーム パイプライン<br />証明書利用者<br />(RP)<br />クレームストア<br />トークン<br />② 承認する<br />③ 発行する<br />① 受付ける<br />発行<br />変換<br />規則<br />output<br />受け<br />付け<br />変換<br />規則<br />input<br />発行<br />承認<br />規則<br />input<br />output<br />output<br />input<br />OK/<br />NG<br />switch<br />要求プロバイダー信頼<br />(Claims Provider Trusts)<br />証明書利用者信頼 (Relying PartyTrust)<br />要求規則 (Claim Rule)<br />
  277. 277. クレームパイプラインと要求規則(クレームルール)<br />受け付け変換規則<br />① 受付ける<br /><ul><li>「要求プロバイダー信頼」で設定する
  278. 278. 「証明書利用者信頼」に渡すためのクレームをセットする</li></ul>大原則①<br />ここで定義されたクレームのみが、パイプラインに沿って「証明書利用信頼」に渡される<br />
  279. 279. クレームパイプラインと要求規則(クレームルール)<br />発行承認規則<br />② 承認する<br /><ul><li>「証明書利用者信頼」で設定する
  280. 280. 「発行変換規則」に移行させるかどうかを判断
  281. 281. クレームは発行しない</li></ul>この設定では「受け付け変換規則」を通過したユーザー全てに、「発行変換規則」への進行を許可<br />
  282. 282. クレームパイプラインと要求規則(クレームルール)<br />③ 発行する<br />発行変換規則<br /><ul><li>「証明書利用者信頼」で設定する
  283. 283. 以下を最終決定する
  284. 284. ユーザーにセキュリティトークンを発行するかどうか
  285. 285. RP/SP にどんなクレームを送信するか</li></ul>規定では空(何も発行しない)<br />ただし、「認証メソッド」と「認証日時」だけは送信される<br />
  286. 286. クレームパイプラインと要求規則(クレームルール)<br />クレームルールを定義するには?<br /><ul><li>要求規則テンプレートを使用
  287. 287. 規定で用意されているルールを使用する場合
  288. 288. [LDAP 属性を要求として送信]
  289. 289. [グループ メンバーシップを要求として送信]
  290. 290. [入力方向の要求を変換]
  291. 291. [入力方向の要求をパススルーまたはフィルター処理]
  292. 292. [カスタム規則を使用して要求を送信]
  293. 293. [入力方向の要求に基づいてユーザーを許可または拒否]
  294. 294. [すべてのユーザーを許可]
  295. 295. カスタムルールを定義
  296. 296. 用意されていないルール(ロジック)を使用する場合
  297. 297. 用意されていない ldap属性を使用する場合
  298. 298. AD DS/ldap以外のクレームストアを使用する場合
  299. 299. SQL Server
  300. 300. その他(テキストファイル など)</li></ul>and くどいようですが…<br />[要求記述]に記載されていないクレームタイプは使用できないので、事前に定義しておく必要がある<br />
  301. 301. クレームパイプラインと要求規則(クレームルール)<br />(参考)既定の LDAP 属性<br />これ以外の ldap 属性を使用する場合には「カスタム規則」を使用<br />
  302. 302. AD FS 2.0Deep Dive<br />要求規則(クレームルール)の定義 例<br />要求記述の定義<br />発行承認規則の定義<br />発行変換規則の定義<br />クレームルールの定義にありがちなミス<br />
  303. 303. 要求規則(クレームルール)の定義 例<br />シナリオ<br /><ul><li>役割がエバンジェリストであるユーザーにのみセキュリティトークンを発行する
  304. 304. セキュリティトークンには「氏名」「役職」「部署」「メール」を含める</li></ul>規定で用意されないため「要求記述」に定義する必要がある<br />
  305. 305. 要求規則(クレームルール)の定義 例<br />作業概要<br /> 要求記述に「部署」を追加<br />「発行承認規則」で「エバンジェリスト」以外を抑止<br />「発行変換規則」で上記4つのクレームを定義する<br />
  306. 306. 要求規則(クレームルール)の定義 例<br />要求記述に「部署」を追加<br />クレームタイプ を URI で設定する。<br />世界で唯一にするため、自社ドメイン名を入れるとよい。<br />
  307. 307. 要求規則(クレームルール)の定義 例<br />「発行承認規則」で「エバンジェリスト」以外を抑止<br />「すべてのユーザーにアクセスを許可」を削除<br />
  308. 308. 要求規則(クレームルール)の定義 例<br />「LDAP属性を要求として送信」を選択<br />Active Directory の属性「title」を 「役割」に放り込む<br />
  309. 309. 要求規則(クレームルール)の定義 例<br />「入力方向の要求に基づいてユーザーを許可または拒否」を選択<br />さらに規則を追加する<br />
  310. 310. 要求規則(クレームルール)の定義 例<br />クレーム「役割」が「エバンジェリスト」ならば…<br />条件に合致したユーザーのみを「許可」<br />
  311. 311. 要求規則(クレームルール)の定義 例<br />要求規則 の処理プロセスについて<br />前のルールの結果が次のルールに引き継がれる<br />クレーム<br />要求規則セット<br />要求規則1<br />発行<br />条件<br />Input Claim Set<br />要求規則2<br />OutputClaim Set<br />要求規則 n<br />トークン<br />
  312. 312. 要求規則(クレームルール)の定義 例<br />「発行変換規則」で4つのクレームを定義<br />
  313. 313. 要求規則(クレームルール)の定義 例<br />LDAP属性を要求して送信<br />複数の ldap属性を一度に定義可能<br />
  314. 314. 要求規則(クレームルール)の定義 例<br />完成形<br />
  315. 315. 実行結果例<br />要求規則(クレームルール)の定義 例<br />OK<br />NG<br />役割が「エバンジェリスト」でなければアクセス拒否<br />
  316. 316. 要求規則(クレームルール)の定義 例<br />クレームルールの定義 ありがちなミス ①<br />現象<br /><ul><li>「発行承認規則」で[入力方向の要求に基づいてユーザーを許可または拒否] ルールを使用し、クレーム名[役職] に「部長」と書かれているユーザーのみに許可したいが、全てのアクセスが拒否されてしまう</li></ul>原因<br /><ul><li>[役職] クレームの中身がからっぽ。「受け付け変換規則」で [役職] クレームが定義されていない場合、「発行承認規則」でいきなり[役職]クレームによる条件判定を行おうとしても、クレームの中身が空のため判定は「NG」となる。事前に、[役職]クレームに値を入力するルールが定義されている必要がある。</li></ul>発行<br />変換<br />規則<br />output<br />受け<br />付け<br />変換<br />規則<br />input<br />発行<br />承認<br />規則<br />input<br />output<br />output<br />input<br />ここでクレームを評価する以前に、クレームが発行されていない場合、「空」の値が入っているものとして評価されてしまう<br />OK/<br />NG<br />
  317. 317. 要求規則(クレームルール)の定義 例<br />クレームルールの定義 ありがちなミス ②<br />現象<br /><ul><li>ルールを変えても送信されるクレームが変わらない</li></ul>原因<br /><ul><li>デスクトップ上に別のブラウザやタブが起動しており、既にクレームを取得している</li></ul>こいつを閉じないと….<br />同じクレームが表示される<br />
  318. 318. 要求規則(クレームルール)の定義 例<br />クレームルールの定義 ありがちなミス③<br />現象<br /><ul><li>「入力方向の要求をパススルーまたはフィルター処理」ルールを使用して、「特定の電子メール フィックスの値と一致する要求値だけをパス スルーする」を定義しているが、サフィックスが一致しないユーザーに対してもクレームが発行されてしまう。</li></ul>原因<br /><ul><li>クレームルールに複数のルールを定義しており、当該ルール以前に電子メールアドレスクレームを発行している場合、それを取り消すことはできない。</li></ul>対処<br /><ul><li>当該ルール以前のルールから電子メールアドレスの発行ルールを削除する</li></ul>上で発行してしまうと…<br />それ以降でフィルターすることはできない<br />
  319. 319. AD FS 2.0Deep Dive<br />カスタムルールについて<br />
  320. 320. カスタムルールの定義<br />カスタムルールのサンプルを見るには<br />
  321. 321. カスタムルールの定義<br />条件部<br />発行部<br />
  322. 322. カスタムルールの定義<br />カスタムルールの構造<br />True<br />条件部<br />発行部<br />False<br />条件文 1<br />=><br />発行文<br />条件文 2<br />&&<br />入力方向のクレーム/属性をチェックし、すべての条件が True の場合に「発行部」が実行される。条件部が無い場合には無条件で True とみなされる。<br />条件部<br />&&<br />オプション<br />発行部<br />発行するトークンタイプと、そこに格納する属性/値を指定する。<br />必須<br />「クレームが発行されない」≠ アクセスできない<br />※クレームを持っていないユーザーにアクセスを許可するかどうかは アプリケーションの判断<br />
  323. 323. カスタムルールの定義<br />書式の基本 ①<br /><ul><li>無条件でクレーム「A」に「値」を入れて発行する</li></ul>=> issue ( Type = “A”, Value = “<値>” );<br /><ul><li>クレーム「A」が”存在する”場合、クレーム「B」に「値」を入れて発行する</li></ul>[Type == “A"]<br /> => issue(Type = “B”, Value = “値");<br /><ul><li>クレーム「A」が”存在しない”場合、クレーム「A」に「値」を入れて発行する</li></ul>NOT Exists([Type == “A"])<br /> => issue(Type = “A”, Value = “値");<br /><ul><li>クレーム「A」が「値1」ならば、クレーム「B」に「値2」を入れて発行する</li></ul>[Type == “A”, Value ==“値1”]<br /> => issue(Type = “B”, Value = “値2”);<br />
  324. 324. カスタムルールの定義<br />書式の基本 ②<br /><ul><li>クレーム「A」が「値1」ならば、クレーム「A」を発行する。それ以外の場合にはクレーム「A」は発行されない</li></ul>c:[Type == “A”, Value ==“値1”]<br /> => issue(claim = c );<br /><ul><li>クレーム「A」が「値1」ならば、クレーム「B」にも「A」と同じ値を入れて発行する</li></ul>c:[Type == “A”, Value ==“値1”]<br /> => issue(Type = “B”, Value = c.Value);<br /><ul><li>クレーム「A」が「値1」でクレーム「B」が「値2」ならば、クレーム「C」には 値1と値2を結合した値を入力して発行する</li></ul>c1:[Type == “A”, Value ==“値1”] &&<br />c2:[Type == “B”, Value ==“値2”]<br /> => issue(Type = “C”, Value = c1.Value + c2.Value);<br />&& はいくつでもつなげることができる<br />※||(or)に相当する演算子は用意されていない<br />
  325. 325. カスタムルールの定義<br />書式の基本 ③ ~ Active Directory からの属性取得<br /><ul><li>Active Directory で認証されたユーザーならば、logonCount属性を取得してクレーム「A」を発行する</li></ul>c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/<br />claims/windowsaccountname", Issuer == "AD AUTHORITY"]<br />=> issue(store = "Active Directory", types = “A”,<br />query = “;logonCount,{0}", param = c.Value);<br />WindowsAccountName クレーム<br /><ul><li>c
  326. 326. Type == “http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname“
  327. 327. Issuer == "AD AUTHORITY“
  328. 328. store = "Active Directory“
  329. 329. query = “;logonCount,{0}“
  330. 330. param= c.Value</li></ul>条件部<br />WindowsAccountNameというクレームが発行されている<br />クレームを発行したのは “ADAUTHORITY” である<br />発行部<br />”Active directory”というクレームストアから<br />属性を取ってくる<br />持ってくる属性は「logonCount」で、<br />ADを検索する条件は windowsaccountname = {0}<br />{0} の値は条件部で渡された WindowsAccountNameの値<br />
  331. 331. カスタムルールの定義<br />カスタムルール活用のコツ ①<br />正規表現の利用<br /><ul><li>(例1)クレーム「A」の値が大文字小文字を問わず「junichia@tf.com」と完全一致ならばクレームを発行する</li></ul>c:[Type == “A”,Value =~“^(?i)junichia@tf.com$”]<br /> => issue(claim = c);<br />^(?i)junichia@tf.com$<br />行末(これより後ろに文字が無いこと)を示す<br />後に続く文字の大文字<br />小文字を区別しない<br />行頭(これより前に文字が無いこと)を示す<br />特殊な文字の前には「(バックスラッシュ)」を付加<br />正規表現言語要素<br />http://msdn.microsoft.com/ja-jp/library/az24scfc.aspx<br />
  332. 332. カスタムルールの定義<br />カスタムルール活用のコツ ②<br />正規表現の利用<br /><ul><li>(例2)クレーム「A」の値が 2 ケタの数字ならば、クレーム「B」に「JUNIOR」を入れて発行する</li></ul>[Type == “A”, Value =~ "^[0-9]{3}$"]<br /> => issue(Type = “B”, Value = “SENIOR”);<br />^[0-9]{3}$<br />行頭(これより前に文字が無いこと)を示す<br />0から9の文字列が3ケタである<br />行末(これより後ろに文字が無いこと)を示す<br />正規表現言語要素<br />http://msdn.microsoft.com/ja-jp/library/az24scfc.aspx<br />
  333. 333. カスタムルールの定義<br />カスタムルール活用のコツ ③<br />ファンクションの活用<br /><ul><li>count:指定されたクレームが持つ値の数をカウントする
  334. 334. RegExReplace:文字列を置き換える</li></ul>count([type == “http://schemas.xmlsoap.org/claims/Reports“] ) > 0<br />=> issue(= "http://schemas.xmlsoap.org/claims/ismanager", value = "true"); <br />c:[type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] <br />=> issue(type = c.type, <br />value = regexreplace(c.value, "(?<domain>[^]+)(?<user>.+)", "FABRIKAM${user}"));<br />
  335. 335. カスタムルールの定義<br />発行ステートメントについて<br /><ul><li>issue :クレームを発行する(output claim setに発行する)
  336. 336. add :input claim set に直接発行する-> クレーム発行のためのテンポラリー領域的な使い方</li></ul>add ステートメントは output クレームを発行しない<br />クレーム<br />要求規則セット<br />要求規則1<br />=> add(type = “title”, value = “部長");<br />input 領域にのみ発行<br />Input Claim Set<br />OutputClaim Set<br />要求規則2<br />title = <br />“部長”<br />role=“Manager”<br />[type == “title”, Value == “部長”]<br />=> issue(type = "Role", value = “Manager");<br />
  337. 337. AD FS 2.0Deep Dive<br />カスタムルールの定義例<br />
  338. 338. カスタムルールの定義例<br />シナリオ<br /><ul><li>役割が「エバンジェリスト」にのみトークンを発行する
  339. 339. ユーザーのアクティブ度(笑)をログオン回数から判定し、回数に応じた Status 与える(アプリケーション側では Status に応じて表示するメニューを変える)
  340. 340. 以下のクレームを送信する</li></ul>規定で用意されないため「要求記述」に定義する必要がある<br />規定で用意されないため「要求記述」に定義する必要がある<br />作業手順<br />要求記述に「ログオン回数」と「ステータス」を追加<br />「発行変換規則」で「ログオン回数」と「ステータス」を定義<br />
  341. 341. カスタムルールの定義例<br />要求記述に「ログオン回数」を定義<br />クレームタイプ を URI で設定する。<br />
  342. 342. カスタムルールの定義例<br />要求記述に「ステータス」を定義<br />クレームタイプ を URI で設定する。<br />
  343. 343. カスタムルールの定義例<br />カスタムルールに「ログオン回数」と「ステータス」を定義<br />
  344. 344. カスタムルールの定義例<br />AD の logonCount属性を「ログオン回数」にセット<br />Active Directory から logonCount 属性を取り出し、クレームタイプ logoncount に入れている<br />
  345. 345. カスタムルールの定義例<br />logoncountをもとにステータスを判定するには<br />logonCount < 10 ならば ステータスは シルバー<br />c:[Type == “http://schemas.tf.com/identity/claims/logoncount”, Value =~ “^[0-9]{1}”] => add (Type = "http://schemas.tf.com/identity/claims/userstatus", Value = "SILVER");<br />logonCount => 10and logonCount < 100 ならば ステータスは ゴールド<br />c:[Type == “http://schemas.tf.com/identity/claims/logoncount”, Value =~ “^[0-9]{2}”] => add(Type = "http://schemas.tf.com/identity/claims/userstatus", Value = “GOLD");<br />logonCount => 10and logonCount < 100 ならば ステータスは ゴールド<br />c:[Type == “http://schemas.tf.com/identity/claims/logoncount”, Value =~ “^[0-9]{3}”] => add(Type = "http://schemas.tf.com/identity/claims/userstatus", Value = “PLATINUM");<br />userstatusクレームを発行する<br /> => Issue(Type = "http://schemas.tf.com/identity/claims/userstatus“ ) ;<br />
  346. 346. カスタムルールの定義例<br />完成形<br />ルールは上から実行される<br />6 userstatusクレームを発行する <要求規則の表示><br />
  347. 347. AD FS 2.0Deep DiveAD FS 2.0 の監査とトレース<br />
  348. 348. トレースログを表示するには<br />[イベント ビューアー] - [アプリケーション と サービスログ] -[AD FS 2.0] を右クリックして [表示]-[分析およびデバッグログの表示] をチェック<br />
  349. 349. トレースログを有効にする<br />
  350. 350. Windows AzureAppFabricAccess Control ServiceV2<br />
  351. 351. 16.AppFabric ACS V2 の役割<br />
  352. 352. AppFabric ACS V2 の役割<br />クラウド上には認証機関がたくさん!<br /><ul><li>全ての認証機関に対応するにはどうすべき?</li></ul>Web アプリケーション<br />信頼<br />信頼<br />信頼<br />信頼<br />信頼<br />信頼<br />AD FS 2.0<br />AD FS 2.0<br />
  353. 353. AppFabric ACS V2 の役割<br />必要なのはクラウド上の STS<br />AppFabricACSV2 が複数のIdPを吸収する<br />AppFabric ACSV2<br />Web アプリケーション<br />信頼<br />信頼<br />アプリケーションは<br />クレーム対応しておけばよい<br />信頼<br />信頼<br />信頼<br />AD FS 2.0<br />AD FS 2.0<br />
  354. 354. AppFabric ACS V2 の役割<br />Windows Azure AppFabricAccess Control ServiceV2<br />クラウド上に用意された STS<br />アプリケーションのコードを変更することなく、新たな Identity Provider と<br />連携することができる<br />サポートされているプロトコル<br /><ul><li>OAuth WRAP 2.0
  355. 355. WS-Federation
  356. 356. WS-Trust
  357. 357. OAuth 2.0 (Draft 13)
  358. 358. OpenID 2.0</li></ul>トークンフォーマット<br /><ul><li>Simple Web Token(SWT)
  359. 359. SAML 1.1/2.0</li></ul>既成の Identity Provider との Passive な連携<br /><ul><li>Windows Live ID/ Google/ Facebool/ Yahoo!(.com)/ OpenID
  360. 360. Active Directory Federation Service 2.0</li></li></ul><li>AppFabric ACS V2 の役割<br />Access ControlServiceV1の用途<br />RESTWEB サービスに「アクセス制御」を実装する<br />(例)道路の混雑状況を提供するサービス<br />問合せ<br />問合せ<br />返答<br />返答<br />誰でもアクセスできてしまう<br />ユーザー<br />アプリ<br />ユーザー<br />アプリ<br />
  361. 361. AppFabric ACS V2 の役割<br />Access ControlServiceV1の用途<br />アプリケーションに認証機能を実装することなく、アクセス制御を実現<br />Relying Party<br />(例)道路の混雑状況を提供するサービス<br />信頼<br />AppFabric<br />STS<br />Access Control Service<br />REST<br />③ トークン<br />②トークン<br />① 認証<br />④ 結果<br />セキュリティ キー<br />or<br />SAML 1.1/2.0トークン<br />or<br />SWT<br />ユーザー<br />アプリ<br />
  362. 362. AppFabric ACS V2 の役割<br />ACSV1 を 企業内 AD との SSO に使用する<br />※ACS では Passive SSO がサポートされていないことに注意<br />9<br />信頼<br />ACS<br />WRAP<br />REST<br />Service<br />5<br />WS-Trust<br />クラウド<br />信頼<br />8<br />オンプレミス<br />6<br />4<br />10<br />AD DS<br />AD FS2.0<br />1<br />7<br />2<br />3<br />クライアント<br />アプリケーション<br />
  363. 363. AppFabric ACS V2 の役割<br />処理の流れ<br />クライアント アプリケーションが AD FS 2.0 にトークン発行を依頼<br />AD DS からクレームを収集<br />AD FS 2.0 から SAML 1.1 トークン発行<br />トークンを ACS に送信<br />ACS は受け取った SAML 1.1 トークンをルールに沿って検証<br />SWT を生成し、クライアントに発行<br />クライアント アプリケーションは受け取った SWT を分解し、正しい ACS から発行されたものか等を検証<br />問題なければ HTTPAuthorization ヘッダーに SWT を埋め込み、REST サービスにPOST<br />REST サービスは受け取った SWT を分解してロールを検証<br />ロールが正しければサービスを実行<br />
  364. 364. AppFabric ACS V2 の役割<br />AppFabric ACSV2の構造<br />独自プログラム<br />ManagementPortal<br />AppFabric ACSManagementService<br />Windows AzureAppFabric ACS 本体<br />リライング<br />パーティ<br />クレーム<br />プロバイダー<br />Protocol<br />クレーム変換<br />エンジン<br />Protocol<br />WS-Federation<br />WS-Federation<br />AD FS 2.0<br />ブラウザーベースアプリ<br />(Passive)<br />SAML/SWT<br />WS-Fed対応STS<br />クレームルール<br />google<br />WEBサイト<br />Yahoo!<br />SAML/SWT<br />OAuth 2.0<br />Facebook<br />SAML/SWT<br />OpenID 2.0<br />OpenID<br />SAML/SWT<br />Live ID<br />Windows LiveID<br />サービス/リッチクライアント<br />(Active)<br />SOAPWeb<br />サービス<br />WS-Trust<br />WS-Trustアプリ<br />WS-Trust<br />SAML/SWT<br />SWT<br />REST Web<br />サービス<br />OAuth/ WRAP 2.0<br />SWT<br />OAuth/ WRAP 2.0<br />SWT対応アプリ<br />
  365. 365. AppFabric ACS V2 の準備<br />AD FS 連携時のクレームの流れ<br />Windows Azure アプリ<br />AppFabric ACS V2<br />Token<br />Token<br />変換<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />Token<br />変換<br />Token<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />属性<br />AD FS 2.0<br />AD DS<br />
  366. 366. AppFabric ACS V2 の役割<br />AD FS 2.0 との SSOの流れ<br />信頼<br />7<br />9<br />WIF<br />信頼<br />クラウド<br />オンプレミス<br />1<br />AD DS<br />AD FS2.0<br />8<br />4<br />5<br />3<br />2<br />6<br />WIF:Windows Identity Foundation<br />
  367. 367. セキュリティトークンの署名と暗号化について<br />AppFabric ACS V2<br />IdP<br />RP<br />信頼<br />信頼<br />metadata<br />metadata<br />metadata<br />metadata<br />トークンフォーマット<br />署名<br />署名<br />複合化<br />暗号化<br />暗号化<br />複合化<br />SAML 2.0<br />SAML 2.0<br />X.509<br />Private Key<br />X.509<br />Public Key<br />X.509<br />Public Key<br />X.509<br />.cer<br />X.509<br />(.cer)<br />SAML 2.0<br />X.509<br />Private Key<br />SAML 1.1<br />SAML 1.1<br />X.509<br />(.cer)<br />SAML 1.1<br />X.509<br />.cer<br />X.509<br />Private Key<br />X.509<br />Public Key<br />X.509<br />Public Key<br />X.509<br />Private Key<br />SWT<br />SWT<br />SWT<br />256-bit symmetric signing key <br />256-bit symmetric signing key <br />
  368. 368. 17.AppFabricACS の準備<br /><ul><li>Namespaceの作成</li></li></ul><li>AppFabric ACS V2 の準備<br />Namespace とは<br />AppFabric ACS V2 のエンドポイント<br /> (AppFabric ACS の WEBサイト名)<br />https://<namespace>.accesscontrol.appfabriclabs.com/<br />
  369. 369. Namespace の作成 ①<br />AppFabric ACS V2 の準備<br />Windows Azure ポータルに移動し、Service Bus、Access Control Service& Caching をクリック<br />
  370. 370. AppFabric ACS V2 の準備<br />Namespace の作成 ②<br />
  371. 371. Namespace の作成 ③<br />AppFabric ACS V2 の準備<br />Namespace を指定する。ここで指定した名前が AppFabric ACS の WEBサイト名になる。<br />https://<Namespace>.accesscontrol.appfabriclabs.com/<br />「Active」になったら使用可能<br />
  372. 372. AppFabric ACS V2 の準備<br />AppFabric ACS 管理画面への移動<br />
  373. 373. AppFabric ACS V2 の準備<br />AppFabricACS 管理サイトの機能<br />Azureアプリケーションの登録<br />主に使用するメニュー<br />Identity Provider の登録<br />クレームルールの登録<br />セキュリティトークンの署名、暗号化のための証明書の登録<br />ACS から Active にセキュリティトークンを発行する場合に使用するユーザーIDを管理<br />管理ポータルにアクセスすることができるユーザーIDを設定<br />独自プログラムからの AppFabricACS 管理サービスへのアクセスを<br />許可するユーザーIDを登録する<br />カスタムログオン画面やエンドポイントのURLを確認する画面<br />
  374. 374. 18.AD FS 2.0 と ACSV2 の連携<br />
  375. 375. AD FS 2.0 との連携<br />AD FS 2.0 と ACS V2 連携の意義<br /><ul><li>複数の企業のユーザーを受け入れ
  376. 376. セキュリティトークンの変換</li></ul>AppFabric ACSV2<br />Web アプリケーション<br />信頼<br />信頼<br />信頼<br />信頼<br />企業A<br />企業B<br />企業 C<br />
  377. 377. AD FS 2.0 との連携<br />セキュリティトークンの変換<br /><ul><li>複数の CP/IdPを受け入れる場合には(ほぼ)必須
  378. 378. アプリケーション側の実装をシンプルにできる</li></ul>Title:Manager<br />Title:部長<br />Title:Manager<br />Title:经理<br />Title:Διευθυντής<br />Title:Менеджер<br />Title:Yöneticisi<br />Title:مدير<br />Title:부장<br />
  379. 379. AD FS 2.0 との連携<br />AD FS 2.0 との連携イメージ<br />AD FS 2.0<br />Windows Azure アプリ<br />AppFabric ACS V2<br />クレーム発行<br />クレーム変換<br />AD FS 2.0<br />クレーム送付<br />クレーム発行<br />属性<br />Redirect<br />Active Directory<br />企業ネットワーク<br />
  380. 380. 19.AD FS 2.0 と ACS V2 の連携構築<br />クレーム対応アプリケーションの作成とWindows Azure への登録<br />ACS V2 の Identity Provider に AD FS 2.0 を登録する<br />アプリケーションを AppFabric ACS V2 に登録する<br />AD FS 2.0 に AppFabric ACS V2 を登録する<br />
  381. 381. AD FS 2.0 と ACS V2 の連携<br />AppFabric ACS V2 と AD FS2.0 の連携手順<br />アプリケーションの作成とWindowsAzure への登録<br />AppFabric ACS V2 のメタデータを登録(STS参照の追加)<br />※ あとはAD FS 2.0 の場合と同じ<br />AD FS 2.0 側<br />Active Directory を構築<br />AD FS 2.0 を構築<br />RP(証明書利用者)として AppFabricACS を登録(メタデータの登録)<br />クレームルールを登録<br />AppFabricACS V2 側<br />AD FS 2.0 のエンドポイントを Identity Provider として登録(メタデータの登録)<br />クレームルールを登録<br />
  382. 382. AD FS 2.0 と ACS V2 の連携<br />これからやる作業<br />AD FS への登録<br />STS参照の追加<br />信頼<br />信頼<br />AppFabric ACSV2<br />Web アプリケーション<br />AD FS 2.0<br />
  383. 383. Windows Azure アプリ<br />AppFabric ACS V2<br />信頼<br />信頼<br />STS参照先を変更<br />AD FS 2.0<br />ここの設定<br />クレーム対応アプリケーションの作成とWindows Azure への登録<br />
  384. 384. クレーム対応アプリケーションの作成<br />AD FS 2.0 用アプリとの違い<br />STS 参照 の設定 のみ<br />AppFabricACSV2 のメタデータを指定<br />
  385. 385. クレーム対応アプリケーションの作成<br />ACS V2 のメタデータ<br />管理ポータルから確認する<br />この情報を控えておく<br />
  386. 386. クレーム対応アプリケーションの作成<br />Windows Azure への登録<br />パッケージを作成<br />証明書を準備<br />Windows AzurePortal にサービスを作成<br />サービス証明書を Windows Azure Portal から登録<br />パッケージをアップロード<br />
  387. 387. Windows Azure アプリ<br />AppFabric ACS V2<br />ここの設定<br />信頼<br />信頼<br />済<br />済<br />AD FS 2.0<br />ACS V2 の Identity ProviderにAD FS 2.0 を登録する<br />
  388. 388. ACS V2 の Identity Providerに AD FS 2.0 を登録する<br />AD FS 2.0 のメタデータをテキストファイルに保存しておく<br />https://<ADFSServer>/federationmetadata/2007-06/federationmetadata.xml<br />ソースファイルを表示して、テキストファイルで保存<br />
  389. 389. ACS V2 の Identity Providerに AD FS 2.0 を登録する<br />ACS V2 の Identity Provider に AD FS 2.0 を登録する ①<br />
  390. 390. ACS V2 の Identity Providerに AD FS 2.0 を登録する<br />ACS V2 の Identity Provider に AD FS 2.0 を登録する ②<br />Identity Provider の識別名。ADFS2.0は複数登録することが可能なので、識別しやすい名前を指定する<br />AD FS 2.0 のメタデータを指定する。URL の場合には AppFabricがアクセス可能なサーバーである必要がある。<br />Identity Provider の選択画面に表示される識別名<br />Identity Provider の選択画面に表示されるロゴ画像<br />利用者に対して、ログオン時にEmailアドレスを強制的に入力させたい場合には、ここのメアドのサフィックス(microsoft.com)を指定する。セミコロンで複数指定可能。<br />このIdentity Provider を使用する アプリケーションを指定する<br />
  391. 391. ACS V2 の Identity Providerに AD FS 2.0 を登録する<br />ACS V2 の Identity Provider に AD FS 2.0 を登録する ③<br />
  392. 392. ACS V2 の Identity Providerに AD FS 2.0 を登録する<br />ACS V2 の Identity Provider に AD FS 2.0 を登録する ④<br />クレームルールを生成する<br />まだルールは無い<br />
  393. 393. ACS V2 の Identity Providerに AD FS 2.0 を登録する<br />ACS V2 の Identity Provider に AD FS 2.0 を登録する ⑤<br />メタデータを元に自動生成されたクレーム<br />クレームとして emailaddressが発行されることが記載されている<br />
  394. 394. ACS V2 の Identity Providerに AD FS 2.0 を登録する<br />AppFabric ACSV2 の Rule<br />IF(Rule Condition)<br />Claim Issuer<br />Input Claim Type<br />Input Claim Value<br />Then(Rule Actions)<br />Output Claim Type<br />Output Claim Value<br />もし<br />○○から発行された<br />○○というクレームタイプに<br />○○という値が入っていたら<br />そのときは<br />○○というクレームタイプに<br />○○という値を入れて発行する<br />
  395. 395. ACS V2 の Identity Providerに AD FS 2.0 を登録する<br />AppFabric ACS に登録されているクレームルールの例<br />AppFabricに対するクレームの発行者<br />つまりIdentity Provider<br />AppFabric に対して入力方向のクレームタイプ<br />AppFabric に対して入力方向のクレームタイプに格納されているべき値<br />入力条件を満たしたときに発行されるクレームタイプ(出力方向のクレーム)<br />出力方向のクレームに格納される値<br />
  396. 396. Windows Azure アプリ<br />AppFabric ACS V2<br />信頼<br />信頼<br />済<br />済<br />済<br />AD FS 2.0<br />ここの設定<br />アプリケーションをAppFabricACSV2 に登録する<br />
  397. 397. アプリケーションをAppFabricACSV2 に登録する<br />WEBアプリケーションの登録 ①<br />Azure上に展開したWEBアプリケーションを AppFabric ACS に登録する<br />
  398. 398. アプリケーションをAppFabricACSV2 に登録する<br />WEBアプリケーションの登録 ②<br />AppFabric ACS 内でのAzureアプリケーションの識別名<br />アプリケーション情報の登録方法<br />手動で設定するか、メタデータをアップロードするかを選択する。今回は「手動」。<br />セキュリティトークンの要求元を指定する<br />セキュリティトークンをどこにPostするのかを指定する<br />エラーが発生した場合に表示するページ<br />
  399. 399. アプリケーションをAppFabricACSV2 に登録する<br />WEBアプリケーションの登録 ③<br />セキュリティトークンのフォーマット(SAML2.0/SAML1.1/SWT)<br />セキュリティトークンを暗号化するかどうか<br />セキュリティトークンの有効期間(秒)<br />Azure アプリケーションと関連付ける Identity Provider。<br />「Identity Providers」メニューで登録した IdP が表示される。規定では「Windows LiveID」のみ。<br />適用するクレーム変換ルール。複数のアプリケーションで1つのルールを共有することも可能。<br />AD FS 2.0 の登録時に作成hしたルールを選択する。<br />トークンの署名に使用する証明書ファイル<br />規定は「規定の証明書」<br />
  400. 400. Windows Azure アプリ<br />AppFabric ACS V2<br />ここの設定<br />信頼<br />信頼<br />済<br />済<br />済<br />AD FS 2.0<br />AD FS 2.0に証明書利用者としてACSV2を登録する<br />
  401. 401. AD FS 2.0に証明書利用者としてACSV2 を登録する<br />ACS V2 メタデータのURI<br />メタデータのURIを控えておく<br />
  402. 402. AD FS 2.0に証明書利用者としてACSV2 を登録する<br />AD FS 2.0 に 証明書利用者として ACS を登録する ①<br />AD FS 2.0 管理コンソールを開く<br />
  403. 403. AD FS 2.0に証明書利用者としてACSV2 を登録する<br />AD FS 2.0 に 証明書利用者として ACS を登録する ②<br />ここにAppFabric ACS メタデータのURIを指定<br />
  404. 404. AD FS 2.0に証明書利用者としてACSV2 を登録する<br />AD FS 2.0 に 証明書利用者として ACS を登録する ③<br />規定で「すべてのユーザーにクレームの発行を許可するか否か」を設定する(発行承認規則)。許可した場合には、クレームルール(要求規則)の設定を使用してクレームの発行条件を設定する必要がある。<br />
  405. 405. AD FS 2.0に証明書利用者としてACSV2 を登録する<br />AD FS 2.0 に 証明書利用者として ACS を登録する ④<br />完了<br />
  406. 406. 動作確認<br />https://tf01.cloudapp.net/<br />複数のIdentity Provider が登録されている場合にはセレクターが表示される。<br />1つしかなければそのまま ADFS に転送される<br />ADにログオンした状態であれば、SSOされる<br />ADFSで定義したメアド<br />
  407. 407. SSOの流れ<br />信頼<br />7<br />9<br />WIF<br />信頼<br />クラウド<br />オンプレミス<br />1<br />AD DS<br />AD FS2.0<br />8<br />4<br />5<br />3<br />2<br />6<br />WIF:Windows Identity Foundation<br />
  408. 408. 20.Google と ACS V2 の連携構築<br />AppFabric ACS V2 側<br />Identity Provider の登録<br />Rule の登録<br />
  409. 409. Identity Provider との連携 ~ Google との連携AppFabric ACS V2 と Google の連携手順<br />Google 側<br />なにもなし!(ユーザーがアカウントを持っていればよい)<br />AppFabricACS V2 側<br />Identity Provider の登録<br />Rule の登録<br />
  410. 410. Googlel と ACS V2 の連携<br />これ

×