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