ずっと気になっていたManagement ConsoleのSSOにようやく成功した。手順はこのサイトの情報に従って、ほぼその通りにやったのになかなか上手く行かず、結局問題はWindows認証だった。。。
1. ADサーバの準備
使用したのはWindows Server 2008 R2のEnterprise Edition。ADはひとまず何も考えずに導入すれば問題ない。
ホスト名 | adfs-test.adfs.local |
2. ADにグループとユーザを作成
最後にIAMロールと名前でマッピングして利用するだけなので、AD側の権限は考慮する必要はなし。下記のようにユーザとグループを作れば問題なし。グループ名は最後にマッピングするので「AWS-」を必ずつけること。
【テスト用アカウント】
ユーザ | bob |
メールアドレス | bob@adfs.local |
所属グループ | AWS-Production、AWS-Dev |
※メールアドレス設定を忘れないように
【ADFS2.0サービス実行アカウント】
ユーザ | ADFSSVC |
3. ADFSのインストール
今回はADサーバ上にADFSも導入した。MicrosoftのサイトからADFS2.0をダウンロードしてインストール。サーバマネージャから導入できるADFSではおそらくダメなのだと思う。手順は英語だが、画面付きの親切手順なのでほとんど迷うところは無い。
4. オレオレ証明書作成
手順にもリンクがあるが、IISマネージャから自己署名入り証明書の作成をしておく。
5. フェデレーションサービス作成
インストール後に起動されたADFS2.0の管理画面から、こちらも手順の通りに。証明書が作成済であれば自動的に選択される。サービスの実行アカウントは先程作成したADFSSVCを設定する。
今のところ毎回「サービス設定の構成」で警告が出る。既知事例とのことなので、下記のコマンドを実行する。
C:\>setspn -a host/localhost adfssvc CN=ADFSSVC,CN=Users,DC=adfs,DC=local の ServicePrincipalNames を登録しています host/localhost 更新されたオブジェクト
6. SAMLメタデータ取得
ADFSサーバ上でSAMLメタデータ(xmlファイル)を取得しておく。下記URLから取得できる。IEはセキュリティ設定がうるさいので、ブラウザはここで既にFirefoxを使った。この時点で「セキュリティ例外」に追加して証明書をインストールしてしまおう。
https://adfs-test.adfs.local/FederationMetadata/2007-06/FederationMetadata.xml
※ホスト名の部分は環境により変更する
7. SAMLプロバイダー作成
ここでAWSに。IAMからIdentity Providerを選択し、Create SAML Providerから作成。先程ダウンロードしたメタデータファイルを利用する。
Provider名 | ADFS |
8. IAMロール作成
手順の通りIAMからロール作成。Select Role Typeで「Grant Web Single Sign-On (WebSSO) access to SAML providers」を選択。Permissionはそれっぽく設定しておく。ロール名は最後にマッピングするので、「ADFS-」を必ずつけること。
ロール | SAML Provider | Permissions |
ADFS-Production | ADFS | Administrator Access |
ADFS-Dev | ADFS | Amazon S3 Read Only Access |
9. 証明書利用者信頼の追加
またADFS管理画面に戻り、証明書利用者信頼の追加を行う。要求規則を計4件設定する作業が面倒だが、手順の通り丁寧に設定する。AWSアカウントのIDは環境により変更する。
10. Windows認証設定
IISマネージャからWindows認証設定を行う。詳細設定から「拡張保護」をオフにする。設定が完了したら、IISとADFSを再起動しておこう。
11. いよいよテスト
下記のURLから接続テスト。先程メタデータをダウンロードしたときに証明書をインストールしてあれば問題なく動作するはず。ここでもFirefoxから接続したが、IEや Chromeでは証明書管理が別となる為、もう少し手順が必要かもしれない。
https://adfs-test.adfs.local/adfs/ls/IdpInitiatedSignOn.aspx
※ホスト名の部分は環境により変更する
ここで散々上手く行かなかったので毎度緊張する。
上手く行った!あとは先程設定したロールで動作するかきちんと確認してみよう。
Windows認証のデバッグ方法やIE、Chrome用の手順もまとめておきたい。余裕があればpowershell手順も。