DE組織でIdPとSP設定してSSOする

# まえがき
この記事は Salesforce Advent Calendar 2024 の16日目の記事です。
現在、[**Identity and Access Management アーキテクト**](https://trailhead.salesforce.com/en/credentials/identityandaccessmanagementarchitect) の絶賛試験勉強中なのですが、Salesforceさんの動画でデモしてたSalesforce 組織同士のシングルサインオンについて Developer Edition 組織(Trailheadで作成できるハンズオン組織)で実装した際の手順を共有します。👇
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/3e14310e-3416-caa2-4b0d-b9119b162dd0.png)

元の動画はこちら👇(当該デモの箇所)

<iframe width="560" height="315" 
src="https://www.youtube.com/embed/dbQMhzl1Jc8?start=1911&end=2365"　frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" loading="lazy" allowfullscreen></iframe>

**Salesforceは IdP(IDプロバイダー)としてもSP(サービスプロバイダー)としても構成できます。**

※IdPだのSPだの意味が分からないという方は、[**土田先生の動画**](https://www.youtube.com/embed/9eDI8SI3hhs?start=234)からご覧下さい。
私が今回やってみたのは、SP環境のレポート開こうとリンククリックした一般ユーザーをIdP環境にリダイレクトさせて認証させるというもの。認証されたらSP環境のレポートが表示されます。
![SP環境のレポート開くときにIdP環境でログインする.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/7159d9a8-3700-f542-06d6-3af7a8a7fb0b.gif)


# :one: マイドメインを設定
DE組織を2つ用意し、今回 IdP側はidpenv SP側はspenv というドメインにしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/b48cde7e-c773-73ba-c98a-6b023b89dfa5.png)

https://trailhead.salesforce.com/ja/content/learn/modules/identity_login/identity_login_my_domain

# :two: 各組織でユーザー情報に同一の統合IDを設定
今回は、営業太郎さんというユーザーで検証します。
SP環境では代理管理者、IdP環境では標準ユーザープロファイルで設定してみました。SSOで同一ユーザーだよと認識されるために統合ID に共通の値を設定しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/1724209c-d1be-38b6-658a-1b74e3bd8e18.png)


# :three: IdP側の組織でIDプロバイダーを有効化
IDプロバイダーの画面で「IDプロバイダーを有効化」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/ede853f3-e85c-6c57-cefb-6dc0a487d6f4.png)

こんな画面になるので表示された証明書のままで「保存」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/5a336199-bec4-755e-0bdb-da602ae93ea7.png)


ダウンロードボタンを押して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/f8125461-818f-4cc5-2e0c-32781e602109.png)

証明書とメタデータをダウンロードしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/fac06842-0ff6-eb4c-4473-577570103038.png)


# :four: SP側でSAML統合シングルサインオン設定
SP側の組織でシングルサインオン設定をします。
・SAMLを使用した統合シングルサインオンセクションの SAMLを有効化にチェック
・SAMLシングルサインオン構成で「メタデータファイルから新規作成」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/b3e6e47e-1058-dbd8-897a-10bfa66411fd.png)

ダウンロードしておいたメタデータファイルを選択して作成ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/ab8aaf84-f5d5-462c-fe00-1bca98789af4.png)

そうするとあらかた埋めてくれています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/d246212d-1b56-0046-5da9-dcd672dac855.png)

IDプロバイダーの証明書のファイル選択でダウンロードしておいた証明書を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/5cc60dab-ea45-6690-30b1-26dd72cf1465.png)

# :five: IdP側で接続アプリケーションを作成
新規接続アプリケーションを設定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/ee1ebe33-ebbc-92f3-5d21-dd9974946efb.png)

このときの署名とか証明書とか件名種別とか揃えます。
ちなみに私の環境はこんな設定になってます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/b3970a40-5c75-507e-ea67-890176cf6e6f.png)


接続アプリの使用できるプロファイル設定もしておきます。(これ設定忘れててハマりました・・・）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/9de1ff00-d1b8-32b0-9e39-622a9eea051d.png)


# :six: SP側で認証設定する
SP側の私のドメイン画面でIdP組織(今回はidpenv-dev-ed)が選択できるようになってるのでチェック入れて保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/6efbbf3e-5b9b-f1ee-c421-03de4473ebf8.png)


上記設定でSP側ドメインをクリックしてきたユーザーがSSOできるはず!!!!:santa_tone2:


## :skull:あれ？うまくいかない？と思ったら確認するところ　
　→　**ID プロバイダーイベントログ**
これは接続アプリケーション側でプロファイル設定していなかったのが原因でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/79b2e8ab-37f7-531a-6a8a-e2ae99f56380.png)


[サービスプロバイダーとSAMLの統合の前提条件](https://help.salesforce.com/s/articleView?id=sf.service_provider_prerequisites.htm&type=5)
[SAML シングルサインオンフロー](https://help.salesforce.com/s/articleView?id=sf.identity_provider_about.htm&type=5)

# :record_button: アプリケーションランチャーに表示させて相互に行き来させる設定
それぞれの組織でお互いの接続アプリケーションの設定をして、開始URLを設定しておけばアプリケーションランチャーに別組織が表示されるので、とっても便利になります:slight_smile:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/410f16af-d76f-21c6-56a1-97699cd50d81.png)

こんな感じ

![アプリランチャーの遷移.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/2b21c6e6-9094-5919-6c2d-3d0115c8f460.gif)



# あとがき
複数Salesforce利用している会社さんで実装するきっかけだったりとか、やってみようとおもったけど何か躓いてる方の助けになればいいなーと思ってます。
IAM資格勉強はこんなことできるんだーって学びが多くて面白いなぁと書かせて頂きました。それでは、皆さん素敵な X'mas ＆ Salesforce Lifeを🎄
![5iq5r1nd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237418/5d15be3a-de08-a521-ea7b-a2f14651c7f3.png)