Amazon ConnectにADFSでSAML連携する時の設定方法

記事タイトルとURLをコピーする

CI部の鎌田です。 Amazon Connectをご検討されているお客様も増えてきておられると思いますが、その際のユーザー管理をActive Directoryにされたいケースもあるのではないかと思います。その際、シングルサインオンされたいケースもあるのではないでしょうか。

このブログでは、既存でADFSサーバーをお持ちのお客様向けに、ADFSでAmazon ConnectをSAML連携する時の設定方法についてご案内いたします。

以下の様な流れで進めます。 本ブログでは2.のIDプロバイダ作成手順から説明を進めていますので、Connectのインスタンス作成については、こちらの宮澤のブログを参考に、作成を行ってください

0.ADFSでSAML連携させる際の前提・注意点 1.Connectのインスタンス作成とIAM Roleの作成 ※本ブログでは説明を省略しているため、こちらのブログを参考に設定ください 2.AWSのマネジメントコンソールでIDプロバイダの設定をおこなう 3.ADFSサーバー側でAWSとSAML連携するための設定をおこなう

0.ADFSでSAML連携させる際の前提・注意点

AWSとActive Directoryを連携させる際、Active Directory側で専用のグループを作成して、Connectにアクセスするユーザーをすべて所属させておく必要があります。 またこの時のグループ名は、AWS側で作成するIAM Role名と同一にしておく必要があります。 このActive Directoryのグループ名とIAM Role名が一致しない場合はSAML連携が成立しないのでご注意ください。

このブログ記事では、どちらも"AWS-"の文字で始まっていることを前提にした記載になっています。

2. AWSのマネジメントコンソールでIDプロバイダの設定

2-1. マネジメントコンソールにログインし、IAMのページにアクセスします。 IAMのページが開いたら、「IDプロバイダー」をクリックします。

2-2. 「IDプロバイダの作成」をクリックします

2-3. プロバイダーのタイプに「SAML」を選択し、プロバイダ名に適当な名称を付けます。 メタデータドキュメントは、ADFSサーバー内で以下のURLにアクセスすることで取得することができます。 ダウンロードした上で、ファイルを読み込ませてください。

https://localhost/FederationMetadata/2007-06/FederationMetadata.xml

入力、選択が終わったら「次のステップ」をクリック。

2-4. 確認画面になったら、「作成」をクリックしましょう。

2-5. IDプロバイダ一覧の画面に戻り、IDプロバイダの作成が完了します。

3. ADFSサーバー側でAWSとSAML連携するための設定

3-1.ADFSサーバーにログインし、ADFSの管理を起動します

3-2.「証明書利用者信頼」を右クリックし、メニューより「証明書利用差信頼の追加」をクリックします。

3-3.ウィザードが開始されます。 「要求に対応する」が選択されていることを確認し、「開始」をクリックします。

3-4.まずはSAML連携する際に使う証明書を含むメタデータの取得方法を選択します。 https://signin.aws.amazon.com/static/saml-metadata.xml からダウンロードするようにするため、「オンラインまたはローカル ネットワークで公開されている証明書利用者についてのデータをインポートする」を選択し、 上記URLをURLのテキストボックスに貼り付けてください。 選択、入力できたら「次へ」をクリックします。

3-5.表示名の設定になります。 ADFSのシングルサインオン用ページで表示される名前になるので、アクセスされる方が分かり易い名前を付けましょう。 表示名を入力したら「次へ」をクリックします。

3-6.アクセスを許可するユーザーの選択画面になります。 「すべてのユーザーを許可」を選択し、「次へ」をクリックします。

3-7.信頼の追加の準備完了、という画面になるので、「次へ」をクリックします。

3-8.「証明書利用者信頼が正常に追加されました」と表示されます。 「このアプリケーションの要求発行ポリシーを構成する」にチェックを入れたまま、「閉じる」をクリックします。

3-9.発行変換規則を追加する画面になります。 「規則の追加」をクリックするとルールを追加できる画面になるので、5つルールを追加していきます。

3-10.1つ目のルールです。要求規則テンプレートは、「入力方向の要求を変換」を選択し、「次へ」をクリックします。

3-11.Windowsのアカウント名に関する規則の設定になります。 下記画面キャプチャを参考に設定してください。設定のパラメタは次の通りです。

設定項目
要求規則名 NameId
入力方向の要求の種類 Windows アカウント名
出力方向の要求の種類 名前 ID
出力方向の名前IDの形式 永続 ID
すべての要求値をパススルーする チェックを入れる

3-12.2つ目のルールです。要求規則テンプレートは、「LDAP 属性を要求として送信」を選択し、「次へ」をクリックします。

3-13.AWSにログインする際に連携する、メールアドレスの設定になります。 下記画面キャプチャを参考に設定してください。設定のパラメタは次の通りです。

設定項目
要求規則名 RoleSessionName
属性ストア Active Directory
LDAP属性 E-Mail-Addresses
出力方向の要求の種類 https://aws.amazon.com/SAML/Attributes/RoleSessionName

3-14.3つ目のルールです。要求規則テンプレートは、「LDAP 属性を要求として送信」を選択し、「次へ」をクリックします。

3-15.Connectにログインする際に連携する、メールアドレス(ユーザー名)の設定になります。 下記画面キャプチャを参考に設定してください。設定のパラメタは次の通りです。

設定項目
要求規則名 Amazon Username
属性ストア Active Directory
LDAP属性 E-Mail-Addresses
出力方向の要求の種類 https://aws.amazon.com/SAML/Attributes/RoleSessionName

3-16.4つ目のルールです。要求規則テンプレートは、「カスタム規則を使用して要求を送信」を選択し、「次へ」をクリックします。

3-17.Active Directoryのグループ名をトークンに変換するためのルールです。 下記画面キャプチャを参考に設定してください。カスタム規則の内容は次の通りです。

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => add(store = "Active Directory", types = ("http://temp/variable"), query = ";tokenGroups;{0}", param = c.Value);

3-18.5つ目のルールです。要求規則テンプレートは、「カスタム規則を使用して要求を送信」を選択し、「次へ」をクリックします。

3-19.Active Directoryのグループ名をAWSのrole名と紐付けるためのルールです。 下記画面キャプチャを参考に設定してください。カスタム規則の内容は次の通りです。 こちらは、Active Directoryのグループ名とrole名ともに、"AWS-"という名称で始まることを前提としたルールとなっています。

c:[Type == "http://temp/variable", Value =~ "(?i)^AWS-"] => issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "AWS-", "arn:aws:iam::[AWSアカウント番号]:saml-provider/ADFS,arn:aws:iam::[AWSアカウント番号]:role/AWS-"));

3-20.一旦、証明書利用者信頼の一覧に戻りましょう。 先程作成した設定を右クリックし、「プロパティ」をクリックします。

3-21.「エンドポイント」のタブをクリックし、「SAMLの追加」をクリックします。

3-22.AWSにログインした後、更にリダイレクトする先のURLを設定します。 下記画面キャプチャを参考に設定してください。設定のパラメタは次の通りです。

設定項目
バインディング Redirect
信頼されたURLを既定として設定する チェックを入れない
インデックス 2
信頼されたURL https://ap-northeast-1.console.aws.amazon.com/connect/federate/[ConnectのインスタンスID]

3-23.「識別子」のタブをクリックします。 「証明書利用者の識別子」を追加します。追加するURLは下記の通りです。

https://signin.aws.amazon.com/saml

追加したら適用→OKの順にクリックし、設定画面を閉じます。

3-24.ADFSリレーステートの設定を有効化する

この後の手順で利用する、リレーステートURLをADFSで有効にするための設定をします。 PowerShellを管理者権限で起動し、以下のコマンドを実行してください。

Set-AdfsProperties -EnableRelayStateForIdpInitiatedSignOn $True

ADFSの設定はこれで完了です。 アクセスする前に、もう一歩準備をします。

3-25. リレーステートURLの生成ツールのダウンロード

Connectの画面へSSOするURLを生成します。下記サイトにアクセスし、「download archive」をクリックして、zipファイルをダウンロードし、解凍してください。

https://archive.codeplex.com/?p=adfsrelaystate

解凍したら、解凍した中にあるフォルダ、「releases\0」を開いてください。 中にあるファイルが生成ツールです。htmlなので、ファイル名を変更し、拡張子にhtmlを付けて、ブラウザで開けるようにします。

ファイル名を変更したら、ダブルクリックしてブラウザで開いてください。

3-26.リレーステートURLの生成

実際にURLを生成しましょう。生成したURLが、Connectにアクセスする際のURLになります。 以下の設定値を入れて「Generate URL」をクリックすると、Resultsに、生成されたURLが表示されます。 このURLをコピーしてください。

パラメタ名 設定値
IDP URL String https://ADFSサーバーのFQDN/adfs/ls/IdpInitiatedSignOn.aspx
Relying Party Identifier https://signin.aws.amazon.com/saml
Relay State / Target App https://ap-northeast-1.console.aws.amazon.com/connect/federate/ConnectのインスタンスID

これで、必要な準備が完了しました。 では、アクセスしてみましょう。

3-27.アクセステスト

3-26.で発行したURLをブラウザに入力します

ユーザー名とパスワードを入力してみましょう。何度かリダイレクトされ・・・

3-27.無事Connectの画面が表示されました!

まとめ

Amazon ConnectにADFSでSAML連携する時の設定方法について、ご案内しました。 SAML連携させる際の参考になれば幸いです。

通称、認証認可おじさん・Windowsおじさん。PowerShellと認証技術が好物ですが、OSはLinuxが好きです。 AWSドキュメントでは言及されていないようなことや、理解を補助するような内容の執筆を心掛けています。