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