【AWS】【Salesforce】SalesforceからAmazonConnectにSSOをする

# 1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民です♪
(/・ω・)/

色々なサービスを連携させるにあたりSSO（シングルサインオン）は便利ですよね。
そこで今回は**SalesforceからAmazonConnectにSSOする方法についてまとめてみたいと思います！**

AWS、AmazonConnect、Salesforceについて勉強中の方の参考になれば幸いです。
(*^^)v

:::note info

本記事は以下のURLに記載の手順を参考にしています。
https://ac.geekfeed.co.jp/salesforce-sso/

:::

# 2.全体的な手順の概要
少々手順が長くなるので、どのような手順で設定していくかを以下にまとめておきます。

1. AWSでAmazonConnectインスタンスを作成する
1. AWSでAmazonConnectインスタンスのユーザを作成する
1. SalesforceでIDプロバイダを有効化する
1. AWSでIDプロバイダを有効化する
1. AWSでIAMポリシー・IAMロールを作成する
1. Salesforceで接続アプリケーションを作成する
1. SalesforceからAmazonConnectにSSOをする

:::note warn
AWSの仕様で、SSOの設定はAmazonConnectインスタンスの作成時しかできません。
:::

# 3.AWSでAmazonConnectインスタンスを作成する
では早速、設定していきましょう！
まず初めにAmazonConnectインスタンスを作成するところからです

3.1.AWSのコンソールにログインします。
3.2.AmazonConnectインスタンスの管理画面を開き、「インスタンスを追加する」を選択します。

|![010_インスタンスを追加するを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/1581d68c-1fe4-a913-45f8-f7d45b07dd34.png)|
|:--|

3.3.「SAML2.0ベースの認証」を選択し、AmazonConnectインスタンスのエイリアス（値は任意です）を入力し、「次へ」を選択します。

|![020_ID管理を設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/51e3752c-7ced-4bf3-a077-c21a825c662d.png)|
|:--|

3.4.「管理者なし」を選択し、「次へ」を選択します。

|![030_管理者なしを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/2cae14e1-d854-fa35-9be7-05b54551364e.png)|
|:--|

3.5.テレフォニーオプションはデフォルトのままで「次へ」を選択します。

|![040_テレフォニーを設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/63f0b443-be8c-b38b-7bae-9c430bb5e902.png)|
|:--|

3.6.データストレージはデフォルトのままで「次へ」を選択します。

|![050_データストレージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/58291ca7-1723-2e9a-763d-050a60e49785.png)|
|:--|

3.7.確認画面が表示されるので、「インスタンスの作成」を選択します。
3.8.数分後、AmazonConnectインスタンスが作成されます。

|![070_インスタンス作成完了.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/91a83570-4cb1-547b-6e8c-45cea3f710c3.png)|
|:--|

3.9.作成されたAmazonConnectインスタンスのエイリアス名を選択します。
3.10.AmazonConnectインスタンスのARNをコピーし、メモ帳等に貼り付けます。

|![076_インスタンスのARNをコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/eb88626b-aba8-2136-6c82-3498dad74adc.png)|
|:--|

# 4.AWSでAmazonConnectインスタンスのユーザを作成する
続いて、SSOで使用するAmazonConnectインスタンスのユーザを作成します。
4.1.「Log in for emergency access」を選択します。

|![370_ログイン_v2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/6b3b560c-14ab-db70-19bc-ae3d285281a4.png)|
|:--|

4.2.「ユーザー管理」を選択します。

|![380_ユーザ管理を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/ae365f7e-9bcf-d2c5-d290-643582b797e2.png)|
|:--|

4.3.「新しいユーザーの作成」を選択します。

|![390_新しいユーザの追加を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/4210cfa6-0a61-134d-c252-854845c7a9a8.png)|
|:--|

4.4.ログインの欄にSalesforceにログインする時に使用しているメールアドレスを入力し、ユーザーを作成します。

|![400_新しいユーザの作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/dda0e11a-62a3-f146-4a87-19fab6b6746a.png)|
|:--|

# 5.SalesforceでIDプロバイダを有効化する
続いて、SalesforceでIDプロバイダ（認証情報や認証結果を管理するシステム）の設定をします。

5.1.Salesforceの設定画面にて、「ID」を検索し、「IDプロバイダ」を選択します。

|![080_IDプロバイダを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/bd970b7d-c2c7-532d-6dc7-d5f86a752d47.png)|
|:--|

5.2.「IDプロバイダを有効化」を選択します。

|![090_IDプロバイダ有効化を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/55be6795-7c5d-4c8c-80a7-82165cbd842f.png)|
|:--|

5.3.表示ラベル、一意の名前（値は任意です）を入力し、「保存」を選択します。

|![100_証明書の作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/985545c8-3e3f-17fd-170c-14d1e603e96c.png)|
|:--|

5.4.「メタデータのダウンロード」を選択します。

|![110_メタデータのダウンロードを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/88c7cccf-b017-fb37-b52c-5de2db2c31bf.png)|
|:--|

5.5.名前を付けて保存ウィンドウが表示されるので、xmlファイルを保存します。

# 6.AWSでIDプロバイダを有効化する
SalesforceでIDプロバイダの設定をした後は、再びAWSに戻り、AWS側のIDプロバイダの設定をします。

6.1.IAMの管理画面を開き、「IDプロバイダ」を選択します。

|![120_IDプロバイダを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/2b62401a-a620-610b-8c60-52b9921aeb2d.png)|
|:--|

6.2.「プロバイダを追加」を選択します。

|![130_プロバイダを追加を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/98e5919a-3745-1945-03fd-9f3cc7419f0d.png)|
|:--|

6.3.以下の表のとおりに設定し、「プロバイダを追加」を選択します。

|項目|設定内容|
|---|---|
|プロバイダのタイプ | SAML |
|プロバイダ名 | （任意） |
|メタデータドキュメント | 手順5.5で保存したxmlファイル |

|![140_プロバイダを作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/f674da65-912d-4586-5634-2d8fe44439f7.png)|
|:--|

6.4.作成されたプロバイダ名を選択します。

6.5.プロバイダのARNをコピーし、メモ帳等に貼り付けます。

|![160_ARNをコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/17ae6174-1ca0-e1ab-3272-46a489c4c550.png)|
|:--|

# 7.AWSでIAMポリシー・IAMロールを作成する
続いて、SSO時に必要なIAMポリシー・ロールを作成していきます。

7.1.以下の内容でIAMポリシーを作成します。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": "connect:GetFederationToken",
            "Resource": [
                "★AmazonConnectインスタンスのARN★/user/${aws:userid}"
            ]
        }
    ]
}
```

:::note info
「★AmazonConnectインスタンスのARN★」の部分には、手順3.10でコピーしたARNを張り付けてください。
:::

7.2.IAMロールの管理画面を開き、「ロールを作成」を選択します。

|![180_ロールを作成を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/c02acb2f-436b-2cb9-8e33-c120f0e75faf.png)|
|:--|

7.3.以下の表のとおりに設定し、「次へ」を選択します。

|項目|設定内容|
|---|---|
|信頼されたエンティティタイプ | SAML2.0フェデレーション |
|SAML2.0ベースのプロバイダー | 手順6.3.で作成したIDプロバイダ |
|プログラムとAWSマネジメントコンソールへのアクセスを許可する | チェックあり |

|![190_ロールの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/81b473da-9cfc-e2f1-b2af-83861dc44032.png)|
|:--|

7.4.手順7.1で作成したIAMポリシーを選択し、「次へ」を選択します。
7.5.ロール名（値は任意です）を入力し、IAMロールを作成します。

|![210_ロール名を設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/da80c825-72a7-a20f-6f97-b38c30b819d8.png)|
|:--|

7.6.作成したIAMロール名を選択し、ARNをメモ帳等に貼り付けます。

# 8.Salesforceで接続アプリケーションを作成する
次はSalesforceで接続アプリケーションを作成します。

8.1.Salesforceの設定画面にて、「アプリケーション」を検索し、「アプリケーションマネージャ」を選択します。

|![230_アプリケーションマネージャを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/7e253913-1c74-e17d-cd60-7d6bf25febd5.png)|
|:--|

8.2.「新規接続アプリケーション」を選択します。

|![240_新規接続アプリケーションを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/0995e0f7-481a-39eb-aa07-234182a4fcd8.png)|
|:--|

8.3.以下の表のとおりに設定し、接続アプリケーションを作成します。
（表に記載のない項目はデフォルトです。）

|項目|設定内容|
|---|---|
|接続アプリケーション名 | （任意） |
|API参照名 | （任意） |
|取引先責任者メール | （管理者のメールアドレス） |
|SAMLの有効化 | チェックあり |
|エンティティID | （AWSのIDプロバイダ名） |
|件名種別| 永続ID |

|![250_接続アプリケーションの設定_エンティティIDはAWSのIDプロバイダ名.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/710b1740-6b77-9007-b84b-c30aafc68c3d.png)|
|:--|

8.4.検索欄に「接続アプリケーション」と入力し、「接続アプリケーションを管理する」を選択します。

|![260_接続アプリケーションを管理するを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/ce6beb22-fefc-1ac1-59e5-7c636c255f3b.png)|
|:--|

8.5.手順8.3で作成した接続アプリケーション名を選択します。

:::note warn
接続アプリケーション名の隣の「編集」を選択すると違う画面が開くので、注意してください。
:::

8.6.カスタム属性の項目にて、「新規」を選択します。

|![280_新規を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/c5103af5-d298-4ecf-63ae-63f3a15a3bba.png)|
|:--|

8.7.以下の表のとおりに設定し、「保存」を選択します。

|項目|設定内容|
|---|---|
|属性キー | https://aws.amazon.com/SAML/Attributes/RoleSessionName |
|属性値 | $User.Email |

|![290_カスタム属性の設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/2824f4d1-df83-7918-9b3a-ef94c8c74d81.png)|
|:--|

8.8.カスタム属性の項目にて、再度「新規」を選択します。

|![300_新規を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/a11ce8d0-da15-0973-4e89-ffa913a92d9a.png)|
|:--|

8.9.以下の表のとおりに設定し、「保存」を選択します。

|項目|設定内容|
|---|---|
|属性キー | 	https://aws.amazon.com/SAML/Attributes/Role |
|属性値 | '★手順6.5でコピーしたIDプロバイダのARN★' & ',' & '★手順7.6でコピーしたIAMロールのARN★' |

|![310_カスタム属性の設定_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/03eb50b3-d2f3-b6ff-32b3-903327f9bfbf.png)|
|:--|

8.10.「Idp-initのログインURL」をコピーし、メモ帳等に貼り付けます。

|![320_Idp-initのログインURLをコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/624b88c8-3dff-d052-c7da-79ebf994e538.png)|
|:--|

8.11.「プロファイルを管理する」を選択します。

|![321_プロファイルを管理するを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/4cd210d8-b301-6b6a-68e2-c4b4faf543e7.png)|

8.12.SSOするユーザのプロファイルを選択し、「保存」を選択します。

|![322_プロファイルを指定する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/a1bcc226-ae2d-b978-6046-2fd657da8627.png)|
|:--|

8.13.「ポリシーを編集」を選択します。

|![325_ポリシーを編集を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/b0bbefd3-3486-70ad-afe2-e560091122cd.png)|
|:--|

8.14.開始URLに以下の値を設定し、「保存」を選択します。

```
★Idp-init のログインURL★&RelayState=https://ap-northeast-1.console.aws.amazon.com/connect/federate/★Amazon ConnectのインスタンスID★?destination=%2Fconnect%2Fccp-v2
```
:::note info
「★Idp-init のログインURL★」の部分には手順8.10でコピーしたURLを張り付けてください。
:::

:::note info
「★Amazon ConnectのインスタンスID★」の部分には
手順3.10でコピーしたARNの末尾36文字（「/」で区切られた最後の部分）を張り付けてください。
:::


|![326_開始URLを設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/fd8f5a92-f70e-54fd-9624-cd98dbae562c.png)|
|:--|

# 9.SalesforceからAmazonConnectにSSOをする
以上で設定は完了です。
では、いよいよ動作確認をしていきます。

9.1.Salesforceのコンソールから左上の点々マーク（麻雀の9筒）を選択し、「すべて表示」を選択します。

|![410_すべて表示を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/84fac6b2-81cb-dabd-2378-dd368ae1bb22.png)|
|:--|

9.2.手順8.3で作成した接続アプリケーション名を選択します。
9.3.AmazonConnectへのSSOが実施され、新規タブにCCPが表示されます。

|![430_CCPが表示される.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/4a423c1c-48ad-7d2a-f1d3-dd48cc108258.png)|
|:--|

# 10.おわりに
ここまで読んで下さり、ありがとうございます！！！
(^^)

SSOを設定することで、ログインIDとパスワードを入力する手間が省けるので、便利だと思いました♪
（設定は思ったより大変でした・・・）

CTI Adapterを利用することでSSOをした後、以下の画像の様にSalesforceと同じタブでCCPを開くことができるので、
次回はそれを記事にしようと思います！
(:3_ヽ)_

|![060_CCPが表示される.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/5f79177f-47e8-25fe-25b6-56f7b90e2236.png)|
|:--|