Salesforceのシングルサインオン設定
こんにちは、co-meetingにてエンジニアしているハナミズキです。
今回はSalesforceのシングルサインオン(SSO)について調べてみましたので、調べた内容を紹介します。
この記事は先日のゆるっとSalesforceトーク #43 で発表した内容をまとめたものです。
1.はじめに
これまでシングルサインオン(SSO)についてよく分からず、「とりあえず他のサービスにGoogleアカウントでログインできるやつがSSOなんでしょう?」という程度の知識しかありませんでした。
Salesforceと関係してくるキーワードとしてSSOが出てきた場合も、Salesforceアカウントでのログイン(Trailheadや本番組織、Sandboxでのログインや環境ハブで追加したときの自動ログイン設定のやつもそうよね)みたいなものなの?という感覚しかありません。
よって、今回は、改めてSalesforceのシングルサインオン(SSO)ってなんだろうという目線で調べてみました。
Salesforceのどの設定ページがシングルサインオンと関わりあるのか紹介します。
2.シングルサインオン(SSO)の概要
シングルサインオン(SSO)とは、一度のログインで複数のアプリケーションやサービスにアクセスできる便利な認証システムです。
公式ヘルプページには以下のように紹介されています。
仕事をしていると、業務用メール、カレンダー、オフィス製品、プロジェクト管理ツールなど、多くの企業向けシステムを日常的に使用することになります。
そして、以下のように各アカウントごとに複雑で覚えにくいパスワードを設定し、それを記憶した上で、各システムに個別にログインする必要があります。これは必要ではありますが、非常に面倒な作業です。
しかし、シングルサインオン(SSO)を利用することで、これらのシステムすべてに一度のログインだけで簡単にアクセス可能になります。
このシングルサインオン(SSO)の認証システムには、用語として以下2つの役割が登場します。
IDプロバイダー もしくは IdP(Identity Provider)
サービスプロバイダー もしくは 証明書利用者
IDプロバイダーはログイン情報を確認し認証をしてくれる存在です。
サービスプロバイダーはその認証を受け入れてユーザーにサービスへのアクセスを許可します。
Salesforceでは、SAMLやOpenID Connectなどのプロトコルを活用することで、IDプロバイダーまたは、サービスプロバイダー、もしくはその両方の役割を持つことができるように設定できます。
3.IDプロバイダーとしてのSalesforce
Salesforceのユーザーアカウント情報を利用して、他のサービスプロバイダーにログインする方法について解説します。
Salesforceでは、SAMLとOpenID Connectの2つのプロトコルに対応しており、IDプロバイダーとして柔軟に利用できます。
なお、当設定を試そうとしましたが、それぞれの外部サービスにおいて、エンタープライズ向けの契約をする必要があり断念しました。
よって、ヘルプページの記述からどのような設定が必要なのか軽く紹介します。
3-1.SAMLを利用する方法
SalesforceのSAML機能を活用し、他のサービスプロバイダーへのログインを実現する設定方法をご紹介します。
手順1: SAML IDプロバイダーの有効化
IDプロバイダー設定の検索
[設定] の [クイック検索] ボックスに「IDプロバイダー」と入力し、[IDプロバイダー] を選択します。
SAML IDプロバイダーの有効化
[IDプロバイダーを有効化] をクリックし、SalesforceをSAML IDプロバイダーとして有効にします。
手順2: 接続アプリケーションの設定
アプリケーションマネージャーのアクセス
[設定] から [クイック検索] ボックスに「アプリケーション」と入力し、[アプリケーションマネージャー] を選択します。
接続アプリケーションの追加
[新規接続アプリケーション] をクリックし、SAMLを有効化します。
公式ヘルプページ「SAML 2.0 を使用した接続アプリケーションとしてサービスプロバイダーを統合」を参考に、接続するサービスプロバイダーを統合します。
さらに詳しい設定手順や具体的なサービスプロバイダー向けの設定例については、Salesforce公式ヘルプ「「Salesforce を SAML ID プロバイダーとして使用した SSO の設定例」をご参照ください。Google Apps (現Google Workspace)、 Office 365 (現Microsoft 365)、SharePoint、Dropbox、Tableau Online、 Zendesk など、さまざまなサービスプロバイダーの設定例が掲載されていますので、ご参考ください。
3-2.OpenID Connectを利用する方法
SalesforceのOpenID Connect機能を使用して、他のサービスプロバイダーへログインする設定方法をご紹介します。
手順1: 接続アプリケーションの設定
アプリケーションマネージャーのアクセス
[設定] の [クイック検索] ボックスに「アプリケーション」と入力し、[アプリケーションマネージャー] を選択します。
接続アプリケーションの追加
[新規接続アプリケーション] をクリックし、OAuth設定を有効にします。
手順2: OpenID Connectの範囲設定
OpenID Connectスコープの設定
OAuth範囲の設定で、[一意の識別子へのアクセスを許可 (openid)] を選択し、IDトークンの設定を行います。
必要に応じて、アプリケーションの詳細な設定を行います。詳細な統合手順については、「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接続する設定事例が紹介されています。参考にご覧ください。
関連リンク
How to Setup OpenId Connect in Salesforce || Easy Ways to use OpenID Connect in Salesforce-Live Demo
4.サービスプロバイダーとしての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を有効化する
[設定] から [クイック検索] ボックスに「シングル」と入力し、[シングルサインオン設定] を選択します。
[編集] をクリックし、[SAMLの有効化] を選択して保存します。
手順3: SAMLシングルサインオン設定の作成
[SAMLシングルサインオン設定] 画面で、次のいずれかの方法で設定を作成します。
[新規] - すべての設定を手動で指定
[メタデータファイルから新規作成] - IDプロバイダーが提供するXMLファイルから設定をインポート
[メタデータURLから新規作成] - 公開URLからXMLファイルをインポート
収集した情報を基に、必要な項目を設定します。
具体的な設定手順は、公式ヘルプ「SAMLサービスプロバイダーとしてSalesforceを使用したSSOの設定」で紹介されていますので、詳しくはそちらをご参照ください。
4-2.認証プロバイダーを利用する方法
Salesforceの「認証プロバイダー」機能を活用し、外部サービスのログイン情報を用いてSalesforceにログインする方法をご紹介します。
認証プロバイダーの種類
認証プロバイダーには以下の種類があり、利用シーンに応じて選択可能です。
定義済み認証プロバイダー(Apple, Facebook, Google, Janrain, LinkedIn, Microsoft, Salesforce, Slackなど)
手順1: 認証プロバイダーの設定
認証プロバイダーの選択
[設定] から [クイック検索] ボックスに「認証プロバイダー」と入力し、[認証プロバイダー] を選択。
[新規] をクリックし、必要な認証プロバイダーの種類を選択します。
カスタム認証プロバイダーを作成する場合は、Auth.AuthProviderPluginClass クラスを拡張したApexクラスを作成し、必要なカスタムメタデータ型も設定します。
認証に必要な「コンシューマー鍵」や「コンシューマーの秘密」などの情報を事前に収集しておきます。
自動生成されるApexクラスの確認
定義済み認証プロバイダーを選択する場合、「登録ハンドラーテンプレートを自動作成」をクリックすると、Auth.RegistrationHandler インターフェースを実装したApexクラスが自動生成されます。
初期設定では自動ユーザー生成が無効になっているため、必要に応じてApexクラスをカスタマイズします。
詳細は、環境に合わせて違うため、それぞれ公式ヘルプ記載の事例を参考にしてください。
手順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については、公式ヘルプ「認証プロバイダーへの機能の追加」に記載されていますが、少しわかりづらかったので、解説していきます。
4-3.組織のログイン方法を編集する方法
外部サービスを利用してSalesforceにログインできるようにするために、Salesforceのログインフォームを編集する方法をご紹介します。
手順1: ドメイン設定ページにアクセス
設定の検索
[設定] から [クイック検索] ボックスに「私の」と入力し、[私のドメイン] を選択します。
認証設定の編集
[認証設定] セクションの横にある [編集] をクリックします。
手順2: 認証サービスの選択
ログインページで使用する認証サービスを選択します。
必要なサービスを選択したら、[保存] をクリックして設定を反映します。
この設定により、Salesforceログインフォームに外部サービスでのログインオプションを追加し、組織のログイン方法を柔軟に制御できます。
関連リンク
5.シングルログアウト
Salesforceでは、シングルログアウト (SLO) を活用して、ユーザーがIDプロバイダーまたはサービスプロバイダーのいずれかからログアウトする際に、両方から同時にログアウトできるようにする設定が可能です。
すべての関連サービスから一度にログアウトできるため、ユーザーは時間を節約できます。
Salesforceでシングルログアウトを有効にする場合、以下のリンク先を参照し、利用シーンに応じた設定方法をご確認ください。
SAML シングルログアウトの設定: Salesforceがサービスプロバイダーの場合
OpenID Connect シングルログアウトの設定: Salesforceが認証プロバイダーとして機能する場合
SAML シングルログアウトの設定: SalesforceがIDプロバイダーの場合
OpenID Connect シングルログアウトの設定 : SalesforceがOpenID Connectプロバイダーの場合
また、認証プロバイダーを利用する場合、Salesforceからシングルログアウト用のURLが提供されます。
Salesforceのシングルログアウト用URLは、各組織のニーズに応じた独自の設定によって、活用できそうです。詳細な設定については、Salesforce公式ドキュメントや、システム管理者の判断を参考に十分に検討いただくことをお勧めします。
6.おわりに
今は特に意識することなく、GoogleアカウントやMicrosoftアカウントを使ったシングルサインオン(SSO)の仕組みを利用する機会が身近にあります。
今回「組織」という視点からSSOを設定することで、以下のようなメリットがあることに改めて気づかされました。
利便性の向上
ユーザーは一度のログインで複数のアプリケーションやサービスにアクセスできるため、ログイン作業の手間が大幅に軽減されます。
セキュリティの強化
パスワードの使い回しや弱いパスワードの使用といったリスクが軽減され、セキュリティレベルが向上します。
パスワード管理の簡素化
特にIT部門においては、ユーザーのパスワードリセットやアカウント管理に関する作業が減少し、管理業務の負担が大幅に軽減されます。
新しいアプリケーションの迅速な導入
SSOを活用することで、新しいツールやアプリケーションを迅速かつ円滑に導入することが可能。ユーザーは新しいサービスに対して別途認証情報を記憶する必要がなくなります。
運用コストの削減
ユーザー管理やセキュリティインフラの維持にかかる時間やコストが削減され、組織全体の運用効率が向上します。
シングルサインオンに対応できるように機能開発してくれている人やセットアップしてくれているシステム管理者がいて、知らないうちに便利になっているんだなと気づけたのは私にとっていい発見でした。
以上です。最後までお読みいただきありがとうございました。こちらの内容が誰かの参考になれば幸いです。
ではでは!