見出し画像

Salesforceのシングルサインオン設定

こんにちは、co-meetingにてエンジニアしているハナミズキです。
今回はSalesforceのシングルサインオン(SSO)について調べてみましたので、調べた内容を紹介します。

この記事は先日のゆるっとSalesforceトーク #43 で発表した内容をまとめたものです。


1.はじめに

これまでシングルサインオン(SSO)についてよく分からず、「とりあえず他のサービスにGoogleアカウントでログインできるやつがSSOなんでしょう?」という程度の知識しかありませんでした。

Salesforceと関係してくるキーワードとしてSSOが出てきた場合も、Salesforceアカウントでのログイン(Trailheadや本番組織、Sandboxでのログインや環境ハブで追加したときの自動ログイン設定のやつもそうよね)みたいなものなの?という感覚しかありません。

よって、今回は、改めてSalesforceのシングルサインオン(SSO)ってなんだろうという目線で調べてみました。
Salesforceのどの設定ページがシングルサインオンと関わりあるのか紹介します。

2.シングルサインオン(SSO)の概要

シングルサインオン(SSO)とは、一度のログインで複数のアプリケーションやサービスにアクセスできる便利な認証システムです。

公式ヘルプページには以下のように紹介されています。

シングルサインオン (SSO) は、ユーザーが 1 回のログインと 1 セットのログイン情報で複数のアプリケーションにアクセスできるようにする認証方法です。

シングルサインオン - Salesforce公式ヘルプ

仕事をしていると、業務用メール、カレンダー、オフィス製品、プロジェクト管理ツールなど、多くの企業向けシステムを日常的に使用することになります。

そして、以下のように各アカウントごとに複雑で覚えにくいパスワードを設定し、それを記憶した上で、各システムに個別にログインする必要があります。これは必要ではありますが、非常に面倒な作業です。

それぞれのシステムにログインするイメージ

しかし、シングルサインオン(SSO)を利用することで、これらのシステムすべてに一度のログインだけで簡単にアクセス可能になります。

シングルサインオンを利用したログインのイメージ

このシングルサインオン(SSO)の認証システムには、用語として以下2つの役割が登場します。

  • IDプロバイダー もしくは IdP(Identity Provider)

  • サービスプロバイダー もしくは 証明書利用者

IDプロバイダーはログイン情報を確認し認証をしてくれる存在です。
サービスプロバイダーはその認証を受け入れてユーザーにサービスへのアクセスを許可します。

IDプロバイダーとサービスプロバイダー

Salesforceでは、SAMLOpenID Connectなどのプロトコルを活用することで、IDプロバイダーまたは、サービスプロバイダー、もしくはその両方の役割を持つことができるように設定できます。

3.IDプロバイダーとしてのSalesforce

Salesforceのユーザーアカウント情報を利用して、他のサービスプロバイダーにログインする方法について解説します。

IDプロバイダーとしてのSalesforce

Salesforceでは、SAMLとOpenID Connectの2つのプロトコルに対応しており、IDプロバイダーとして柔軟に利用できます。

<前提>
それぞれの外部システムに、Salesforceのログイン情報を利用してログインできるように設定するためには、それぞれの外部システムにおけるシステム管理者である必要があります。

なお、当設定を試そうとしましたが、それぞれの外部サービスにおいて、エンタープライズ向けの契約をする必要があり断念しました。
よって、ヘルプページの記述からどのような設定が必要なのか軽く紹介します。

3-1.SAMLを利用する方法

SalesforceのSAML機能を活用し、他のサービスプロバイダーへのログインを実現する設定方法をご紹介します。

手順1: SAML IDプロバイダーの有効化

  1. IDプロバイダー設定の検索

    • [設定] の [クイック検索] ボックスに「IDプロバイダー」と入力し、[IDプロバイダー] を選択します。

  2. SAML IDプロバイダーの有効化

    • [IDプロバイダーを有効化] をクリックし、SalesforceをSAML IDプロバイダーとして有効にします。

手順2: 接続アプリケーションの設定

  1. アプリケーションマネージャーのアクセス

    • [設定] から [クイック検索] ボックスに「アプリケーション」と入力し、[アプリケーションマネージャー] を選択します。

  2. 接続アプリケーションの追加

さらに詳しい設定手順や具体的なサービスプロバイダー向けの設定例については、Salesforce公式ヘルプ「「Salesforce を SAML ID プロバイダーとして使用した SSO の設定例」をご参照ください。Google Apps (現Google Workspace)、 Office 365 (現Microsoft 365)、SharePointDropboxTableau Online Zendesk など、さまざまなサービスプロバイダーの設定例が掲載されていますので、ご参考ください。

3-2.OpenID Connectを利用する方法

SalesforceのOpenID Connect機能を使用して、他のサービスプロバイダーへログインする設定方法をご紹介します。

手順1: 接続アプリケーションの設定

  1. アプリケーションマネージャーのアクセス

    • [設定] の [クイック検索] ボックスに「アプリケーション」と入力し、[アプリケーションマネージャー] を選択します。

  2. 接続アプリケーションの追加

    • [新規接続アプリケーション] をクリックし、OAuth設定を有効にします。

手順2: OpenID Connectの範囲設定

  1. OpenID Connectスコープの設定

なお、公式ヘルプにはOpenID Connectの具体的な設定例は掲載されていませんが、YouTube動画「How to Setup OpenId Connect in Salesforce || Easy Ways to use OpenID Connect in Salesforce-Live Demo 」などで、特定のSalesforce組織のログイン情報を使い、別のSalesforce組織へSSO接続する設定事例が紹介されています。参考にご覧ください。

関連リンク

4.サービスプロバイダーとしてのSalesforce

外部サービスのログイン情報を利用してSalesforceにログインする方法について解説します。

サービスプロバイダーとしてのSalesforce

Salesforceでは、SAMLを利用する方法と、OpenID Connectを始めいくつかのプロトコルに対応している「認証プロバイダー」という機能を利用する方法があります。

4-1.SAMLを利用する方法

外部サービスからSAMLを利用してSalesforceにログインする設定方法をご紹介します。

手順1: IDプロバイダーから必要な情報を収集
まず、SalesforceでSAML認証を利用するために、以下の情報をIDプロバイダーから収集します。

  • ID プロバイダーの一意の識別子 (発行者 ID)

  • SAML のユーザー ID 種別

  • SAML のユーザー ID の場所

  • 属性の名前

  • 属性の URI

  • 名前 ID の形式

手順2: SalesforceでSAMLを有効化する

  1. [設定] から [クイック検索] ボックスに「シングル」と入力し、[シングルサインオン設定] を選択します。

  2. [編集] をクリックし、[SAMLの有効化] を選択して保存します。

手順3: SAMLシングルサインオン設定の作成

  1. [SAMLシングルサインオン設定] 画面で、次のいずれかの方法で設定を作成します。

    • [新規] - すべての設定を手動で指定

    • [メタデータファイルから新規作成] - IDプロバイダーが提供するXMLファイルから設定をインポート

    • [メタデータURLから新規作成] - 公開URLからXMLファイルをインポート

  2. 収集した情報を基に、必要な項目を設定します。

具体的な設定手順は、公式ヘルプ「SAMLサービスプロバイダーとしてSalesforceを使用したSSOの設定」で紹介されていますので、詳しくはそちらをご参照ください。

4-2.認証プロバイダーを利用する方法

Salesforceの「認証プロバイダー」機能を活用し、外部サービスのログイン情報を用いてSalesforceにログインする方法をご紹介します。

認証プロバイダーの種類

認証プロバイダーには以下の種類があり、利用シーンに応じて選択可能です。

手順1: 認証プロバイダーの設定

  1. 認証プロバイダーの選択

    • [設定] から [クイック検索] ボックスに「認証プロバイダー」と入力し、[認証プロバイダー] を選択。

    • [新規] をクリックし、必要な認証プロバイダーの種類を選択します。

    • カスタム認証プロバイダーを作成する場合は、Auth.AuthProviderPluginClass クラスを拡張したApexクラスを作成し、必要なカスタムメタデータ型も設定します。

    • 認証に必要な「コンシューマー鍵」や「コンシューマーの秘密」などの情報を事前に収集しておきます。

  2. 自動生成されるApexクラスの確認

    • 定義済み認証プロバイダーを選択する場合、「登録ハンドラーテンプレートを自動作成」をクリックすると、Auth.RegistrationHandler インターフェースを実装したApexクラスが自動生成されます。

    • 初期設定では自動ユーザー生成が無効になっているため、必要に応じてApexクラスをカスタマイズします。

詳細は、環境に合わせて違うため、それぞれ公式ヘルプ記載の事例を参考にしてください。

定義済みのGoogle認証プロバイダーを追加した後のイメージ

手順2: 認証URLの取得

認証プロバイダー設定後、Salesforceによって以下のURLが提供されます。必要に応じて、これらのURLを使用します。

  • Test-Only Initialization URL(訳: テスト専用初期化 URL)

  • Single Sign-On Initialization URL(訳:シングルサインオン初期化 URL)

  • Existing User Linking URL(訳: 既存のユーザーをリンクする URL)

  • OAuth-Only Initialization URL(訳: OAuth 専用初期化 URL)

  • Single Logout URL(訳: シングルログアウト URL)

それぞれのURLについては、公式ヘルプ「認証プロバイダーへの機能の追加」に記載されていますが、少しわかりづらかったので、解説していきます。

Test-Only Initialization URL(訳: テスト専用初期化 URL)
シングルサインオン(SSO)の設定が正しく動作するかをテストするためのURLです。このURLを使用して、実際の運用環境に影響を与えることなく、SSOフローが正常に機能するかを確認することができます。
主にSSO設定や認証プロバイダーとの連携を検証する際に使用され、実際のユーザーログインやデータアクセスには使用されません。

Single Sign-On Initialization URL(訳:シングルサインオン初期化 URL)
ユーザーにサードパーティのアカウントで、Salesforce組織にログインさせたい場合に利用します。こちらのURLを使用すると、認証プロバイダーにリダイレクトされ、IDプロバイダーへサインインするよう求められます。ログインすることでSalesforceにユーザーが作成されます。
なお、認証プロバイダーに指定している[登録ハンドラー]のロジック内にて、ユーザー作成できる条件を満たしていない場合は失敗します。また、自動生成された登録ハンドラーの場合、日本語環境との違いがあるためcreateUserメソッドなどエラーとなりやすいです。この時に内部で例外が発生している場合は開発者コンソールに出力されます。テスト専用初期化 URLで取得できた項目と同等の情報がcreateUserメソッドの第二引数 Auth.UserData dataで取得できるため、これらを活用しながら登録ハンドラーのApexクラスを見直し、シングルサインオン初期化 URLを使用してください。

Existing User Linking URL(訳: 既存のユーザーをリンクする URL)
既存のSalesforce ユーザと サードパーティの アカウントの紐付けに利用します。リンクするユーザで Salesforce にログインして、こちらのURLを開くと、認証プロバイダーにリダイレクトされ、サインインするよう求められます。ログインすることで紐付け完了です。
次回からサードパーティのアカウントを利用してログインできるようになります。
誤ってリンクした場合は、対象ユーザーの詳細を開き[サードパーティアカウントのリンク]のセクションにて[取り消し]アクションを行ってください。

OAuth-Only Initialization URL(訳: OAuth 専用初期化 URL)
このURLはユーザーがSalesforceにアクセスするために必要なOAuth アクセストークンを取得するために使います。主にサードパーティアプリケーションやサービスが、Salesforceのデータにアクセスするためのユースケースで使用されます。例えば、外部のアプリケーションがSalesforceのデータを取得・更新する際に、このURLを使ってOAuthトークンを取得し、そのトークンを使ってデータにアクセスします。
このURLは、ユーザーのシングルサインオン(SSO)には対応していないため、ユーザーの認証を目的とするのではなく、データアクセス専用です。

Single Logout URL(訳: シングルログアウト URL)
このURLは、Salesforceでシングルサインオン(SSO)を使用している場合に、ユーザーが外部プロバイダーとSalesforceの両方から同時にログアウトするために使います。

4-3.組織のログイン方法を編集する方法

外部サービスを利用してSalesforceにログインできるようにするために、Salesforceのログインフォームを編集する方法をご紹介します。

手順1: ドメイン設定ページにアクセス

  1. 設定の検索

    • [設定] から [クイック検索] ボックスに「私の」と入力し、[私のドメイン] を選択します。

  2. 認証設定の編集

    • [認証設定] セクションの横にある [編集] をクリックします。

手順2: 認証サービスの選択

  1. ログインページで使用する認証サービスを選択します。

  2. 必要なサービスを選択したら、[保存] をクリックして設定を反映します。

私のドメイン-認証設定にて定義済みのGoogle認証プロバイダーを追加したイメージ

この設定により、Salesforceログインフォームに外部サービスでのログインオプションを追加し、組織のログイン方法を柔軟に制御できます。

ログインフォームに定義済みのGoogle認証プロバイダーが追加されたイメージ

関連リンク

5.シングルログアウト

Salesforceでは、シングルログアウト (SLO) を活用して、ユーザーがIDプロバイダーまたはサービスプロバイダーのいずれかからログアウトする際に、両方から同時にログアウトできるようにする設定が可能です。

すべての関連サービスから一度にログアウトできるため、ユーザーは時間を節約できます。

シングルログアウトのイメージ

Salesforceでシングルログアウトを有効にする場合、以下のリンク先を参照し、利用シーンに応じた設定方法をご確認ください。

また、認証プロバイダーを利用する場合、Salesforceからシングルログアウト用のURLが提供されます。

Salesforceのシングルログアウト用URLは、各組織のニーズに応じた独自の設定によって、活用できそうです。詳細な設定については、Salesforce公式ドキュメントや、システム管理者の判断を参考に十分に検討いただくことをお勧めします。

6.おわりに

今は特に意識することなく、GoogleアカウントやMicrosoftアカウントを使ったシングルサインオン(SSO)の仕組みを利用する機会が身近にあります。

今回「組織」という視点からSSOを設定することで、以下のようなメリットがあることに改めて気づかされました。

  • 利便性の向上

    • ユーザーは一度のログインで複数のアプリケーションやサービスにアクセスできるため、ログイン作業の手間が大幅に軽減されます。

  • セキュリティの強化

    • パスワードの使い回しや弱いパスワードの使用といったリスクが軽減され、セキュリティレベルが向上します。

  • パスワード管理の簡素化

    • 特にIT部門においては、ユーザーのパスワードリセットやアカウント管理に関する作業が減少し、管理業務の負担が大幅に軽減されます。

  • 新しいアプリケーションの迅速な導入

    • SSOを活用することで、新しいツールやアプリケーションを迅速かつ円滑に導入することが可能。ユーザーは新しいサービスに対して別途認証情報を記憶する必要がなくなります。

  • 運用コストの削減

    • ユーザー管理やセキュリティインフラの維持にかかる時間やコストが削減され、組織全体の運用効率が向上します。

シングルサインオンに対応できるように機能開発してくれている人やセットアップしてくれているシステム管理者がいて、知らないうちに便利になっているんだなと気づけたのは私にとっていい発見でした。

以上です。最後までお読みいただきありがとうございました。こちらの内容が誰かの参考になれば幸いです。

ではでは!