Salesforce CRM と Salesforce Marketing Cloud 間でシングルサインオンを設定してみた

Salesforce CRM（コア）と Salesforce Marketing Cloud（SMC）間におけるシングルサインオンの方法をまとめました。

公式のヘルプを見ても行間の説明が抜けまくっていて、正直よくわかりません。
サポートに問合せたらSSOはサポート対象外だそうで、有償サポートを結べの一点張りでした。
なので、本記事によって一人でも救われれば幸いです。

本設定では、コアがIDプロバイダ（IdP）、SMCがサービスプロバイダ（SP）とします。

## コアの設定

### 私のドメインの設定

もし行っていない場合は事前に設定しておく。

### メタデータのダウンロード

設定 > ID > ID プロバイダ > メタデータのダウンロード

![Screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44044/4186cdfb-d03e-6335-83b2-96e1a4c20274.png)


参考：SAML ID プロバイダーとしての Salesforce の構成
https://help.salesforce.com/articleView?id=mc_overview_configure_salesforce_as_saml_identity_provider.htm&type=5

参考：新しい Salesforce SAML メタデータキーの作成
https://help.salesforce.com/articleView?id=mc_overview_create_salesforce_saml_key.htm&type=5

## SMCの設定

### メタデータの設定

Email > 管理者 > データ管理 > キー管理 > 作成

以下の設定を行い保存する。

- Key Type：SSOメタデータ
- 名前：Salesforce Identity
- SSO メタデータ：「メタデータの貼り付け」を選択し、ダウンロードしたメタデータをテキストエディタで開いて貼り付ける

![Screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44044/00fa5a33-c7f3-0c13-9a56-4b8de68ac969.png)


もしSMC側でSAML Metadataが選べない場合は以下の内容でサポートデスクに依頼をかける。
ーーーーーーーーーーーーーーーーーーーーー
依頼事項: キー管理「SAML Metadata」の有効化
・対象 MID: XXXXXXXX
ーーーーーーーーーーーーーーーーーーーーー

参考：新しい Salesforce SAML メタデータキーの作成
https://help.salesforce.com/articleView?id=mc_overview_create_salesforce_saml_key.htm&type=5

### セキュリティの設定

セットアップ > 設定 > セキュリティ > セキュリティ設定 > 編集

以下の設定を行い保存する。

- シングルサインオン：チェック

![Screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44044/a793b51f-c656-a8bf-ae39-a60fa83db59c.png)

セットアップ > 設定 > セキュリティ > セキュリティ設定 > シングルサインオン設定

SSO SAML メタデータの「メタデータのダウンロード」を開く

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44044/2e31e833-9b91-3e47-8ee7-f913b518fed9.png)

XMLが表示される。以下の箇所を【ACS URL】として控える。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44044/c2509cd1-ddae-c8df-2dbe-0c3d35bd25e4.png)

Marketing Cloud SP が開始したリンクを控える。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44044/537b5611-408d-9654-25d5-dc901178c59c.png)

参考：Marketing Cloud の Salesforce シングルサインオンの有効化
https://help.salesforce.com/articleView?id=mc_overview_enable_salesforce_sso.htm&type=5

### ユーザの設定

セットアップ > 管理 > ユーザー > ユーザー > 対象ユーザを選択 > 編集

以下の設定を行い保存する。

- シングルサインオンを許可：チェック
- フェデレーションID：コアのユーザ名を入力

# コアの設定

### 接続アプリケーションの作成

設定 > アプリケーション > アプリケーションマネージャ > 新規接続アプリケーション

以下の内容を設定して保存する。

- 接続アプリケーション：Marketing Cloud
- 取引先責任者 メール：任意
- SAML の有効化：チェック
- エンティティ ID：https://sp.exacttarget.com/shibboleth-sp
- ACS URL：控えていた【ACS URL】を入力する
- 件名種別：ユーザ名
![Screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44044/6dc0255b-4d23-1a55-80b5-29737c9a72bf.png)

参考：Salesforce での Marketing Cloud ログイン用の接続アプリケーションの作成
https://help.salesforce.com/articleView?id=mc_overview_create_salesforce_connected_app.htm&type=5

### 接続アプリケーションの情報を取得する

設定 > アプリケーション > アプリケーションマネージャ > Marketing Cloud > Manage

以下の2つの情報を控える。

-「メタデータのダウンロード」をクリックして、ファイルをダウンロードする。
- 【Idp-init のログイン URL】を控える。

### 接続アプリケーションのOAuthの設定を行う

設定 > アプリケーション > アプリケーションマネージャ > Marketing Cloud > 編集
- OAuth 設定の有効化：チェック
- コールバック URL：Idp-init のログイン URLを入力
- 選択した OAuth 範囲：「ユーザに代わっていつでも要求を実行」「基本情報へのアクセス」を選択
![Screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44044/cc92eac0-3a53-fb4a-0159-0e5f350e94c4.png)


設定 > アプリケーション > アプリケーションマネージャ > Marketing Cloud > Manage > ポリシーを編集

- 開始URL：【Idp-init のログイン URL】＋「&RelayState=」＋【Marketing Cloud SP が開始したリンク】を入力

許可されているユーザ：すべてのユーザは自己承認可能



### プロファイルでアプリケーションを有効化する

設定 > 管理 > ユーザ > プロファイル > 該当プロファイルを選択 > 編集

以下の設定を行い保存する。

- 接続アプリケーションへのアクセス > Marketing Cloud：チェック
![Screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44044/55fb6e9a-9621-3db6-ca48-93a62dd6708c.png)

以上で設定は完了です。