More Related Content Similar to 2/5 ADFS 2.0 を使用して Windows Azure との SSO を実現しよう v1.1 (20) More from junichi anno (20) 2/5 ADFS 2.0 を使用して Windows Azure との SSO を実現しよう v1.12. 2
AD FS 2.0 はすべてのサーバーにインストール
tf20101102-02
tf20101102-01
NLB
tfadfs.tf.comtfadfs.tf.com
AdfsSetup.exe
AdfsSetup.exe
3. 3
AD FS 2.0 のダウンロード
Active Directory Federation Services 2.0 RTW - 日本語
2008 用
2008 R2 用
5. 5
AD FS 2.0 のインストール ②
前提条件は自動的
に満たしてくれる
前提条件は自動的
に満たしてくれる
再起動
7. 7
AD FS 2.0 初期構成前の準備
1. サーバー構成を決めておく
• スタンドアロン
• サーバーファーム
2. 構成データベースを決めておく
• Windows Internal Database
• SQL Server
3. サービスアカウントを作成しておく
8. 8
サーバーファーム と スタンドアロン
• スタンドアロン
– AD FS サーバー 1 台
– 構成 DB は WID のみ
• サーバーファーム
– AD FS サーバー 複数台を前提とした構成
– ロードバランスが可能
– 構成 DB は WID or SQL Server (クラスタ可能)
(ADFS+WID) 1* ADFS n* + SQL Server(ADFS+WID) n*
(ADFS+WID) 1*
9. 9
AD FS 2.0 ~ サーバー ファームと構成 DB
1. スタンドアロン + WID
2. サーバー ファーム+ WID
• 各サーバーが WID を持つ
• 5 分に 1 回の更新チェック
( 各サーバー→プライマリ )
• 機能制限が発生
• SAML Token Replay Detection
• SAML Artifact Resolution
3. サーバー ファーム+ SQL Server
• fsconfig.exe コマンドによる構成
• WID からの移行は不可
• SQL Server は 1 セット
• クラスター構成可能
WID : Windows Internal Database
可
用
性
低
高
プライマリ
セカンダリ セカンダリ
R/O R/O
R/W
ADFS
ADFS ADFS
ADFS ADFS ADFS
R/WSQL
Server
11. 11
( 参考 ) Token Replay Attack とは
• 取得済のセキュリティ トークンを再利用して
アクセス権を得ようとするアタック
– キオスク端末等でブラウザーを閉じないと危険
– ブラウザーの [ 戻る ] でトークン取得ポイントに戻れてしまう
• WIF には Replay を検出する機能が実装されている
• Replay 検出は規定でオフ
• 有効にするには DetectReplayedTokens 値を true
http://msdn.microsoft.com/en-us/library/ee517257.aspx
12. 12
( 参考 ) SAML Artifact Resolution とは
• SSO を実現する トークン受け渡し手順 の 1 つ
a. ブラウザーはトークンではなく、トークンの「 Artifact 」を
STS から受け取り RP にリダイレクトする
b. RP は受け取った Artifact を IdP に提示して正当性を評価
c. 評価 OK ならば、 RP は IdP から直接トークンを取得する
• ユーザーとサーバー間の通信帯域が細い場合に有用
Artifact ( アーティファクト )
セキュリティトークン (SAML Assertion) のリファレンス
1
2
3
STS サービス
13. 13
AD FS 用サービスアカウントの作成
• AD FS が使用するサービスアカウント
• サーバーファーム(複数の AD FS サービス)で共有するため
ドメインユーザーアカウントとして作成する
– スタンドアロンの場合には Network Service アカウントが使用される
• 管理者権限は(必ずしも)必要ない
– 管理者権限( servicePrincipalName の書き込み権限)が無い場合 SPN の自動登録に失敗
する(後述)
作成例
15. 15
AD FS 2.0 初期構成の流れ
tf20101102-02
tf20101102-01
NLB
tfadfs.tf.comtfadfs.tf.com
1 台目
サーバーファームを構
成
2 台目以降
サーバーファームに追
加
構成 DB
( SQL Server )
構成情報は
SQL Server に
格納される
構成情報は
SQL Server に
格納される
18. 18
1 台目の AD FS
~ 環境構成ウィザード編 ②
事前に取り込んでおい
た証明書が表示される
事前に取り込んでおい
た証明書が表示される
事前に作成しておいた
サービスアカウント
事前に作成しておいた
サービスアカウント
(注意)
サービスアカウントの入
力が求められるのは
「サーバーファーム」を
選択した場合
20. 20
1 台目の AD FS
~ 環境構成ウィザード編 ③
サービスアカウントに指定
したユーザーが管理者権限
を持っていない場合に発生
する
サービスアカウントに指定
したユーザーが管理者権限
を持っていない場合に発生
する
21. 21
SPN ( Service Principal Name )とは?
(参考)認証のためのサービス ID
http://msdn.microsoft.com/ja-jp/library/ms733130(VS.85).aspx
AD FS 2.0
サービス
( adfssrv )
• サービスのインスタンスを正確に識別するための ID
(乗っ取りを回避)
• Kerberos でサービスの認証に使用される
• 登録するには管理者権限が必要
• ドメイン内に同じ SPN は登録できない
kerberos チケットを発行kerberos チケットを発行
AD DS
SPN を送付SPN を送付
KDC
SPN チェッ
ク
SPN チェッ
ク
チケット送付チケット送付
サービス認証サービス認証
サービス
アカウント
SPN
22. 22
SPN を手動で登録する
setspn -a hostadfssrv < ドメイン名 >< サービスアカウン
ト名 >
( 例 ) setspn -a hostadfssrv tfadfssvc
setspn -a hostadfssrv < ドメイン名 >< サービスアカウン
ト名 >
( 例 ) setspn -a hostadfssrv tfadfssvc
23. 23
AD FS 2.0 を構成するファイルと設定情報
Stand
Alone
SF
(SQL)
SF
(WID)
備考
AD FS 本体ファイルおよび
PowerShell コマンドレット
○ ○ ○
KB974408
WIF ランタイム ○ ○ ○ KB974405
Windows Internal Database
○ ○
インスタンス名
: MICROSOFT##SSEE
データベース名
: AdfsArtifactStore
: AdfsConfiguration
SQL Server
○
インスタンス名
: < 指定した名前 >
データベース名
: AdfsArtifactStore
: AdfsConfiguration
IIS アプリケーション
○ ○ ○
ファイル: c:inetpubadfs
アプリケーション
: Default Web Siteadfs
: Default Web Siteadfsfs
アプリケーションプール
: ADFSAppPool
証明書共有コンテナ
○ ○
CN=xxxx…
xxxxx,CN=ADFS,CN=Microsoft,CN=Program
Data,DC=< ドメイン名 >
SPN ○ ○ HOST/Adfssrv
24. 24
AD FS 2.0 をアンインストールするには
1. 証明書共有コンテナを削除( PowerShell を使用)
ADSI Edit を起動し、「既定の名前付きコンテキスト」に接続
し、 CertificateSharingContainer の値と一致するコンテナを削除する。
2. AD FS 2.0 ( KB974408 )を削除
3. WIF ランライム( KB974405 )を削除
4. WID または SQL Server の当該インスタンス(もしくはデータベースのみ)を
削除
5. IIS 上のアプリケーションとアプリケーションプール、ファイル群を削除
6. SPN を削除
サービスアカウントの servicePrincipalName 属性から「 hostadfssrv 」を削除
(参考) http://blogs.technet.com/b/junichia/archive/2010/07/28/3347209.aspx
PS C:>Add-PsSnapin Microsoft.Adfs.Powershell
PS C:>Get-ADFSProperties |Select-Object CertificateSharingContainer
CertificateSharingContainer
---------------------------
CN=0586a130-89fa-40e8-8896-18ece4d171e7,CN=ADFS, CN=Microsoft, CN=Program
Data, DC=T3304, DC=com
C:setspn -d hostadfssrv <AD FS サーバーのホスト名 >
再構成だけしたい場合は↑↓を実施
25. 25
WID の管理方法
• SQL Server Management Studio Express を使用
• サーバー名は
.pipemssql$microsoft##sseesqlquery
AD FS 2.0 用
DB
AD FS 2.0 用
DB
26. 26
1 台目の AD FS
~ fsconfig コマンド編( SQL Server を使用)
FSConfig.exe CreateSQLFarm
/ServiceAccount < ドメイン名 >< サービスアカウント名 >
/ServiceAccountPassword < サービスアカウントのパスワード
>
/SQLConnectionString “
database=< 構成 DB 名 > ;
server=<SQL Server のサーバー名 >< インスタンス名 > ;
integrated security=SSPI "
/AutoCertRolloverEnabled
/CleanConfig
書式
既定のインスタンス
( MSSQLSERVER )な
らば指定しなくてもよい
既定のインスタンス
( MSSQLSERVER )な
らば指定しなくてもよい
既定の名前は AdfsConfiguration既定の名前は AdfsConfiguration
29. 29
2 台目以降の AD FS
ウィザードを使用する場合( WID の場合)
構成 DB が WID の場合にはウィザードを使用することが可能
1 台目の ADFS サーバー1 台目の ADFS サーバー
30. 30
2 台目以降の AD FS
fsconfig コマンドを使用する場合( SQLSV の場合)
構成 DB が SQL Server の場合には fsconfig コマンドを使用する
SQL Server の場合にはウィザードを使用できない
C:……>FSConfig.exe JoinSQLFarm
/ServiceAccount TFadfssvc
/ServiceAccountPassword P@ssw0rd
/SQLConnectionString “
database=AdfsConfiguration ;
server=TF20101102-03 ;
integrated security=SSPI "
JoinSQLFarm オプションで実行
33. 33
AD FS 2.0 管理コンソールの基礎
クレームのもととなる属性情報の格納庫を定義する。
既定では、所属している Active Directory が定義され
ている。
クレームのもととなる属性情報の格納庫を定義する。
既定では、所属している Active Directory が定義され
ている。
「証明書利用者」とは「 RP/SP 」のこと。自分が
IdP/CP 側の STS である場合には、ここに RP/SP
を定義することで信頼関係を構築できる。既定では
何も定義されていない。
「証明書利用者」とは「 RP/SP 」のこと。自分が
IdP/CP 側の STS である場合には、ここに RP/SP
を定義することで信頼関係を構築できる。既定では
何も定義されていない。
「要求プロバイダー」とは「 IdP/CP 」のこと。自分
が RP/SP 側の STS である場合には、ここに
IdP/CP となるサーバーを定義する。既定では自身
が所属している Active Directory ドメインが定義され
ている(「要求プロバイダーであること」が規定
値となっている)。
「要求プロバイダー」とは「 IdP/CP 」のこと。自分
が RP/SP 側の STS である場合には、ここに
IdP/CP となるサーバーを定義する。既定では自身
が所属している Active Directory ドメインが定義され
ている(「要求プロバイダーであること」が規定
値となっている)。
この AD FS 2.0 ( STS )で扱うことができるクレー
ムが定義されている。逆に言えばここに定義されて
いないクレームを使うことはできない。先方から要
求されているクレームは個々に定義する。
この AD FS 2.0 ( STS )で扱うことができるクレー
ムが定義されている。逆に言えばここに定義されて
いないクレームを使うことはできない。先方から要
求されているクレームは個々に定義する。
36. 36
AD FS 2.0 管理コンソールの基礎
要求記述
• システム間で送受信するクレームタイプが定義されている
• ここに定義されていないクレームは、要求規則テンプレートで使用するこ
とができない(カスタムルールでは独自に作成可能)
あくまでも識別名と
しての「名前」。こ
の STS 内部だけで通
用する。
あくまでも識別名と
しての「名前」。こ
の STS 内部だけで通
用する。
ワールドワイドで一意なクレー
ムの名前(だから URI で書か
れている)。これを使ってク
レームが識別される。
ワールドワイドで一意なクレー
ムの名前(だから URI で書か
れている)。これを使ってク
レームが識別される。
このクレームを外部から
受信可能か否か、外部に
送信可能か否かを定義
このクレームを外部から
受信可能か否か、外部に
送信可能か否かを定義
37. 37
(参考)既定のクレーム タイプ
英語表記 日本語表記
E-Mail Address 電子メール アドレス
Given Name 指定名
Name 名前
UPN UPN
Common Name 共通名
AD FS 1.x E-Mail Address AD FS 1.x 電子メール アドレス
Group グループ
AD FS 1.x UPN AD FS 1.x UPN
Role 役割
Surname 姓
PPID PPID
Name Identifier 名前 ID
Authentication Method 認証方法
38. 38
英語表記 日本語表記
Deny Only Group SID 拒否のみグループ SID
Deny only primary SID 拒否のみプライマリ SID
Deny only primary group SID 拒否のみプライマリ グループ SID
Group SID グループ SID
Primary Group SID プライマリ グループ SID
Primary SID プライマリ SID
Windows account name Windows カウント名
Authentication Instant 認証タイム スタンプ