OpenID Connect を使用した認証プロバイダーの設定
Salesforce をサードパーティ OpenID プロバイダーの証明書利用者としてシングルサインオン (SSO) を設定するには、OpenID Connect を実装する認証プロバイダーを設定します。この設定により、ユーザーは OpenID プロバイダーから Salesforce にログインできるようになり、Salesforce による保護されたデータへのアクセスを承認できます。
必要なエディション
| 使用可能なインターフェース: Lightning Experience および Salesforce Classic |
| 使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
| 必要なユーザー権限 | |
|---|---|
| 設定を参照する | 「設定・定義の参照」 |
| 設定を編集する | 「アプリケーションのカスタマイズ」 および 「認証プロバイダーの管理」 |
認証プロバイダーは、OpenID Connect プロトコルのサーバー側を実装する任意のサードパーティで設定できます。一般的な OpenID プロバイダーとして、次のようなプロバイダーがあります。
Salesforce を OpenID プロバイダーの証明書利用者として設定するには、次の手順を実行します。
- 登録ハンドラーを設定します。
- アプリケーションをサードパーティに登録して、Salesforce をアプリケーションドメインにします。
- Salesforce の OpenID Connect 認証プロバイダーを定義します。
- Salesforce で生成されたコールバック URL を使用するようにアプリケーションを更新します。
- 接続をテストします。
- ログインページに認証プロバイダーを追加します。
登録ハンドラーの設定
シングルサインオンに認証プロバイダーを使用するには、登録ハンドラーを作成する必要があります。登録ハンドラーがユーザーを作成し、ID プロバイダーを介して Salesforce にアクセスする既存のユーザーを更新します。Apex または Flow Builder を使用して登録ハンドラを設定できます。詳細は、「Create an Authentication Provider Registration Handler (認証プロバイダー登録ハンドラーの作成)」を参照してください。
OpenID プロバイダーでのアプリケーションの登録
Salesforce で認証プロバイダーを定義する前に、Web アプリケーションを OpenID プロバイダーに登録する必要があります。このプロセスは、OpenID プロバイダーによって異なります。たとえば、Google アプリケーションを登録するには、OAuth 2.0 クライアント ID を作成します。
- OpenID プロバイダーの Web サイトでアプリケーションを登録します。
- アプリケーション設定を変更し、アプリケーションドメイン、またはホームページ URL を Salesforce に設定します。
-
OpenID プロバイダーのドキュメントから、次の設定値を取得します。
- クライアント ID
- クライアントの秘密
- 承認エンドポイント URL
- トークンエンドポイント URL
- ユーザー情報エンドポイント URL
Salesforce での認証プロバイダーの定義
生成された [認証プロバイダー ID] の値を確認しておいてください。Auth.AuthToken Apex クラスで使用します。
- [設定] から、[クイック検索] ボックスを使用して [認証プロバイダー] を見つけて選択します。
- [新規] をクリックします。
- [プロバイダータイプ] に [OpenID Connect] を選択します。
- プロバイダーの名前を入力します。
- クライアント設定 URL に使用する URL サフィックスを入力します。たとえば、認証プロバイダーの URL 接尾辞が MyOpenIDConnectProvider である場合、SSO URL は https://mydomain_url または site_url /services/auth/sso/OpenIDConnectProvider のようになります。
- [コンシューマー鍵] に OpenID プロバイダーから入手したクライアント ID を使用します。
- [コンシューマーの秘密] に OpenID プロバイダーから入手したクライアントの秘密を使用します。
-
[承認エンドポイント URL] に、OpenID プロバイダーから入手したベース URL を入力します。
ヒント 必要に応じて、クエリ文字列パラメーターをベース URL に追加できます。たとえば、オフラインアクセス用に Google から更新トークンを取得するには、https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force を使用します。Google で最初の更新トークンの後にも更新トークンが引き続き提供されるように、更新アクションの承認をユーザーに求めるには approval_prompt パラメーターが必要となります。 - OpenID プロバイダーから入手したトークンエンドポイント URL を入力します。
-
OpenID プロバイダーのユーザー情報エンドポイント URL を入力します。
メモ OAuth を使用してプロバイダーと API を統合する場合、ユーザー情報エンドポイントは必要ありません。 - セキュリティを強化する OAuth 2.0 Proof Key for Code Exchange (PKCE) 拡張を自動的に有効にするには、[Proof Key for Code Exchange (PKCE) 拡張を使用] を選択します。この設定がプロバイダーのセキュリティ保護にどのように役立つかについての詳細は、「Proof Key for Code Exchange (PKCE) Extension (コード交換の証明鍵 (PKCE) 拡張機能)」を参照してください。
-
必要に応じて、次の項目を設定します。
- [トークン発行者] 項目は、
https://URL形式で認証トークンの供給元を指定します。OAuth 2.0 Web サーバー認証フローの場合、プロバイダーはトークンエンドポイントから ID トークンを応答に含める必要があります。必要に応じて、プロバイダーは更新トークンフローの応答に ID トークンを含めることができます。
この ID トークンは Token Issuer 値および UserInfo エンドポイントの情報と照らして検証されます。ID トークンの署名は検証されません。
この ID トークンの利用者は、認証プロバイダーに登録されたコンシューマー鍵です。他の利用者値を含めないでください。
- [デフォルトの範囲] に、認証エンドポイントへの要求と共に送信する範囲を入力します。送信しない場合は、認証プロバイダータイプのハードコード化されたデフォルトが使用されます。デフォルトについては、OpenID Connect の開発者用ドキュメントを参照してください。
[デフォルトの範囲] に、認証エンドポイントへの要求と共に送信する範囲を入力します。送信しない場合は、認証プロバイダータイプのハードコード化されたデフォルトが使用されます。デフォルトについては、OpenID Connect の開発者用ドキュメントを参照してください。
- コンシューマー鍵とコンシューマーの秘密を入力すると、コンシューマーの秘密がデフォルトで SOAP API の応答に含まれます。SOAP API 応答で秘密を表示しないようにするには、[SOAP API 応答にコンシューマーの秘密を含める] の選択を解除してください。2022 年 11 月より、メタデータ API 応答では、秘密が常にプレースホルダーの値に置き換えられます。デプロイ時に、プレースホルダーをプレーンテキストのコンシューマーの秘密に置き換えるか、後から UI で値を変更してください。
- [トークン発行者] 項目は、
- 必要に応じて、トークンをクエリ文字列ではなくヘッダーで送信する場合は、[ヘッダーでアクセストークンを送信] を選択します。
- 必要に応じて、コンシューマー鍵と秘密をリクエストボディではなく基本ヘッダーで送信する場合は、[ヘッダーでクライアントログイン情報を送信] を選択します。
-
必要に応じて、次の項目を設定します。
- [カスタムエラー URL] に、プロバイダーがエラーの報告に使用する URL を入力します。
- [カスタムログアウト URL] に、ユーザーが SSO フローを使用して認証された場合に、ログアウト後の特定の移動先となる URL を入力します。この項目を使用して、ユーザーをブランド設定されたログアウトページか、またはデフォルトの Salesforce ログアウトページ以外の場所のいずれかに移動します。URL は、http または https プレフィックスを付けて完全修飾する必要があります (https://acme.my.salesforce.com など)。
ヒント シングルログアウト (SLO) を設定して、Salesforce と ID プロバイダーの両方から自動的にユーザーをログアウトするようにします。Salesforce では、証明書利用者として、ユーザーが ID プロバイダーまたは Salesforce からログアウトした場合でも OpenID Connect SLO がサポートされます。 -
Apex 登録ハンドラを使用するには、次の手順を実行します。
- [登録ハンドラ種別] で、[Apex] を選択します。
-
[登録ハンドラ] で、
Auth.RegistrationHandlerインタフェースを実装する既存の Apex クラスを選択します。または、登録ハンドラのテンプレートを作成するには、[登録ハンドラテンプレートを自動的に作成] をクリックします。このクラスを後で編集してデフォルトのコンテンツを変更してから使用します。
-
登録ハンドラーにフローを使用するには、次の手順を実行します。
- [登録ハンドラ種別] で、[フロー] を選択します。
- [登録ハンドラー] で、[ID ユーザー登録] フロー種別の既存のフローを選択します。
-
デフォルトプロファイルを選択します。登録ハンドラーを実行するには、デフォルトプロファイルが必要です。ここでデフォルトプロファイルを指定しない場合、フロー自体でデフォルトプロファイルを設定します。
認証プロバイダーユーザー登録フローテンプレートを使用する場合、ここで設定したプロファイルは defaultProfileId 変数に自動的に保存されます。
-
デフォルトの取引先を選択します。Experience Cloud サイトで認証プロバイダーを使用している場合、このアカウントには新しい内部ユーザーが保存されます。
「認証プロバイダーのユーザー登録」フローテンプレートを使用する場合、ここで設定したプロファイルは自動的に defaultAccountId 変数に保存されます。
-
[Execute Registration As (登録の実行ユーザー)] で、Apex クラスまたはフローを実行する実行ユーザーを選択します。このユーザーは「ユーザーの管理」権限を持っている必要があります。
[他のアカウントで登録を実行] では、登録ハンドラーが動作するコンテキストが提供されます。本番環境では、通常、[他のアカウントで登録を実行] ユーザー用にシステムユーザーを作成します。このように、ハンドラーによって実行される操作は、その登録プロセスが簡単に特定されます。たとえば取引先責任者が作成される場合、システムユーザーがそれを作成します。
- プロバイダーでポータルを使用するには、[ポータル] ドロップダウンリストからポータルを選択します。
- [アイコン URL] に、サイトのログインページのボタンとして表示するアイコンのパスを追加します。このアイコンは Experience Cloud サイトにのみ適用されます。Salesforce のログインページまたは [私のドメイン] のログイン URL には表示されません。ユーザーは、このボタンをクリックし、サイトに関連付けられた認証プロバイダーを使用してログインします。独自の画像へのパスを指定するか、いずれかのサンプルアイコンの URL を項目にコピーしてください。
- ID プロバイダーの MFA サービスではなく、Salesforce 多要素認証 (MFA) 機能を使用するには、[この SSO プロバイダーで Salesforce MFA を使用] を選択します。この設定は、MFA が直接適用されているユーザーの MFA のみをトリガーします。詳細は、「SSO (Salesforce 組織) での Salesforce MFA の使用」を参照してください。
- 設定を保存します。
認証プロバイダーを定義した後、複数のクライアント設定 URL が生成されます。
クライアント設定 URL では、ユーザーの特定サイトへのログイン、サードパーティからのカスタマイズされた権限の取得、認証後の特定の場所への移動を行うための、追加の要求パラメーターをサポートしています。
OpenID Connect アプリケーションの更新
認証プロバイダーを Salesforce で定義したら、OpenID プロバイダーに戻り、アプリケーションのコールバック URL を更新します。Google アプリケーションの場合、コールバック URL は承認済みのリダイレクト URI と呼ばれています。PayPal の場合は戻り URL と呼ばれています。
SSO 接続のテスト
ブラウザーの認証プロバイダー設定ページでテスト専用初期化 URL を開きます。OpenID プロバイダーにリダイレクトされ、サインインするよう求められます。そしてサインイン時に、アプリケーションを認証するよう求められます。認証後、ユーザーは Salesforce にリダイレクトされます。
ログインページへの認証プロバイダーの追加
認証プロバイダーをログインオプションとして表示するようにログインページを設定します。組織の SSO を設定しているのか、Experience Cloud サイトの SSO を設定しているかに応じて、このステップは異なります。
- 組織の場合、「組織のログインページへの認証プロバイダーの追加」を参照してください。
- Experience Cloud サイトの場合、「Experience Cloud サイトのログインページへの認証プロバイダーの追加」を参照してください。
