G Suite を IdP にした Salesforce の SAML SSO の有効化

· Read in about 5 min · (2091 words) ·

唐突に G Suite と Salesforce を SAML で連携する方法をご紹介。

G Suite と Salesforce は共に SAML で SSO (シングルサインオン) 連携できる機能が標準で備わっており、またどちらも IdP (認証プロバイダー) を担うことができます。 今回、ひょんなことから設定を検討することになったのですが、公式ドキュメント[参考文献1]があまりにも説明足らずだったので、スクショを交えてじっくり解説したいと思います。

事前条件

G Suite の事前条件は以下の通りです:

  • 特権管理者権限を持っている

Salesforce の事前条件は以下の通りです:

  • システム管理者権限を持っている
  • カスタムドメイン (xxx.my.salesforce.com) を設定してある

今回の例では、Google Apps Standard 無料時代に作成した G Suite 組織と、Salesforce Developer Edition 組織をフェデレーションします。

1. G Suite の情報取得

1-1. https://admin.google.com/<DOMAIN>.com にアクセスし、ログインします。

G Suite 管理コンソール

1-2. [セキュリティ] -> [シングルサインオン (SSO) の設定] と進みます。

シングルサインオン (SSO) の設定

1-3. [証明書をダウンロード] ボタンを押し、証明書をダウンロードしておきます。また [IDP メタデータをダウンロード] ボタンを押し、メタデータ XML もダウンロードしておきます。

1-4. このページはそのままにして別のタブで Salesforce にログインします。

2. Salesforce の有効化

2-1. 設定から [ID] -> [シングルサインオン設定] を選びます。

シングルサインオン設定

2-2. [編集] ボタンを押し、[SAML を有効化] に ✅ を入れ、[保存] ボタンを押します。

2-3. [SAML シングルサインオン設定] ペインの [メタデータファイルから新規作成] ボタンを押します。メタデータファイルは手順 1-3 の IDP メタデータの XML ファイルを指定します。

シングルサインオン設定

2-4. 以下の通り入力します (手をつけるのは名前IDプロバイダの証明書ぐらいで、他はアップロードしたメタデータから既に入力されています):

入力項目 入力するもの
名前 適宜 (認証時のボタン名・設定名になる) G Suite
API 参照名 (名前入力後に自動補完) G_Suite
発行者 手順 1-4 の [エンティティ ID] 値 https://accounts.google.com/o/saml2?idpid=xxx
エンティティ ID Salesforce 組織の URL https://mikan-dev-ed.my.salesforce.com
ID プロバイダの証明書 手順 1-4 でダウンロードした証明書 xxx.pem
証明書の署名要求 (デフォルト値)
署名要求メソッド RSA-SHA256
アサーション復号化証明書 アサーション暗号化なし
SAML ID 種別 (デフォルト値)
SAML ID の場所 ID は、Subject ステートメントの NameIdentifier 要素にあります
サービスプロバイダの起動要求バインド [リダイレクト] を選択
ID プロバイダのログイン URL 手順 1-4 の [SSO の URL] 値 https://accounts.google.com/o/saml2/idp?idpid=xxx
カスタムログアウト URL (空)
カスタムエラー URL (空)
シングルログアウトを有効にする (デフォルト値)
ユーザプロビジョニングの有効化 (デフォルト値)

2-5. [保存] ボタンを押すと設定情報が表示されます。一番下の [エンドポイント] ペインにある情報をあとで使うため、タブをそのままにしておきます。

3. G Suite の IdP 設定

3-1. 管理コンソールのトップへ戻り、[アプリ] を選びます。

アプリの設定

3-2. [SAML アプリ] を選びます。

アプリ > SAML アプリ

3-3. [サービスやアプリをドメインに追加] を選択、または右下の + ボタン押します。

SAML アプリケーションで SSO を有効にする

3-4. [Salesforce] を選ぶと、手順 1-4 と同じ情報が表示されるので、確認して [次へ] を選びます。

3-5. アプリケーション名に Salesforce、アプリケーション ID に salesforce が設定されています。そのまま [次へ] を選びます。

3-6. 以下の通り入力します:

入力項目 入力するもの
ACS の URL 手順 2-5 の [ログイン URL] 値 https://mikan-dev-ed.my.salesforce.com?so=xxx
エンティティ ID Salesforce 組織 (ドメイン) の URL https://mikan-dev-ed.my.salesforce.com
開始 URL Salesforce 組織 (ドメイン) の URL https://mikan-dev-ed.my.salesforce.com
署名付き応答 ⬜️ (無効)
名前 ID メインのメールアドレス
名前 ID の書式 UNSPECIFIED

3-6. [次へ] を選ぶと、ウィザードは完了ですが、まだ有効化されていせん。ここではひとまず [OK] を押します。

Salesforce の SSO 設定

3-6. [Salesforce の設定] ペインの右上にあるメニューアイコンを押し、 [オン (すべてのユーザー)] を選びます。なお、組織が複数あって、個別に有効化したいときは、[一部の組織に対してオンにする] が利用できます。

アプリ > SAML アプリ > Salesforce の設定

4. Salesforce の認証有効化

4-1. 設定から [会社の設定] -> [私のドメイン] を選びます。

4-2. 一番下の [認証設定] ペインで [編集] ボタンを押します (Classic に飛びます)。

認証設定

4-3. [認証サービス] に [G Suite] が出現しています (手順2-4 で設定した名前)。✅ を入れて保存します。

いざ、ログイン!

Salesforce 組織のログインページ (例では https://mikan-dev-ed.my.salesforce.com/) にアクセスすると・・・

ログイン画面

“または次を使用してログイン:” が登場し、[G Suite] が出ました (手順2-4 で設定した名前)。これをクリックすると、Google の認証画面に飛ぶ仕組みです。

ログインできましたか?おめでとうございます🎉 一本通ったら、ユーザーのプロビジョニングなどをセットアップすることもできます[参考文献2]。設定すると、G Suite でユーザーの作成や変更があった場合に、それらの情報を Salesforce に連携させることが可能になります。双方のライセンス (ユーザー数) などにも注意する必要がありますが、ある程度の規模で運用するなら業務効率化のため必須でしょう。検討してみてください。

参考文献

  1. Salesforce クラウド アプリケーション - G Suite 管理者 ヘルプ
  2. Salesforce のユーザー プロビジョニングの設定 - G Suite 管理者 ヘルプ