カスタム外部認証プロバイダーの作成
OAuth をサポートし、OpenID Connect をサポートしないサードパーティからシングルサインオン (SSO) を設定するには、カスタム認証プロバイダーを作成します。カスタム認証プロバイダーを使用すると、ユーザーはサードパーティのログイン情報を使用して Salesforce 組織にログインできるようになります。
必要なエディション
| 使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
カスタムサードパーティ認証プロバイダーを作成するための各手順を詳しく説明します。
- 登録ハンドラーを設定します。
- 選択したサードパーティでアプリケーションを設定します。
- カスタムメタデータ型を作成して、サードパーティが必要とするカスタムメタデータ項目を追加します。
-
選択したメタデータ型用に、一致する Apex クラスとメソッドを作成します。次に、これらのクラスを使用して、抽象クラス
Auth.AuthProviderPluginClassを拡張することでカスタム認証プロバイダーを実装します。 - サードパーティのメタデータを追加して認証プロバイダーを設定します。
- Salesforce で生成されたコールバック URL を使用するようにアプリケーションを更新します。
- 接続をテストします。
- ログインページに認証プロバイダーを追加します。
関連項目:
登録ハンドラーの設定
シングルサインオンに認証プロバイダーを使用するには、登録ハンドラーを作成する必要があります。登録ハンドラーがユーザーを作成し、ID プロバイダーを介して Salesforce にアクセスする既存のユーザーを更新します。Apex または Flow Builder を使用して登録ハンドラを設定できます。詳細は、「Create an Authentication Provider Registration Handler (認証プロバイダー登録ハンドラーの作成)」を参照してください。
サードパーティアプリケーションの設定
Salesforce 組織で外部認証プロバイダープラグインを設定する前に、サードパーティでアプリケーションを設定します。
- サードパーティのサイトに移動して、アプリケーションを作成します。
- 必要に応じて、アプリケーションの設定を変更します。アプリケーションにアプリケーションドメインがある場合は Salesforce に設定します。
-
サードパーティから提供された情報をメモします。この情報は、次のステップでカスタムメタデータ型に追加します。サードパーティが提供する情報の例を示します。一部のサードパーティでは、これらの値の名前が違っていたり、他の値を提供していたり、他の要件を求めていたりします。
- アプリケーション ID
- アプリのシークレットキー
- 承認エンドポイント URL
- トークンエンドポイント URL
- 範囲
Salesforce でのカスタムメタデータ型の作成
サードパーティアプリケーションを作成したら、カスタムメタデータ型を設定します。これらのメタデータ型では、アプリケーション ID やアプリのシークレットキーなど、サードパーティが提供する情報に対してカスタム項目を追加します。後で認証プロバイダーを設定するときに、これらのカスタム項目にサードパーティの情報を入力します。
- [設定] で、[クイック検索] ボックスに「メタデータ」と入力して、[カスタムメタデータ型] を選択します。
- [新規カスタムメタデータ型] をクリックします。
- カスタムメタデータの表示ラベル名と複数形の表示ラベル名を入力して、作業内容を保存します。
- API でメタデータオブジェクトを参照するためのオブジェクト名を入力します。
- (省略可能) カスタムメタデータ型の説明を入力します。
- 作業内容を保存します。
- [カスタム項目] セクションで、[新規] をクリックして、サードパーティが認証プロバイダーの設定に必要とするデータ型を選択します。認証プロバイダーを設定すると、これらのカスタム項目が認証プロバイダーの設定ページに追加されます。
- 項目の表示ラベルと名前、そしてカスタム項目の詳細 (説明やヘルプテキストなど) を入力します。
- 項目のページレイアウトを選択します。
- 作業内容を保存します。または、別のカスタム項目を追加するには、[保存 & 新規] をクリックします。
Apex クラスおよびメソッドの作成
カスタムメタデータ型を作成したら、Auth.AuthProviderPluginClass 抽象クラスを拡張する Apex クラスを作成します。この新しいクラスは、認証プロバイダーのカスタム設定を保存したり、その認証プロトコルを処理したりします。また、新しい Apex クラスは、サードパーティ認証プロバイダーの名前を作成し、使用可能な認証プロバイダーのリストにこの名前を表示します。
- [設定] から、[クイック検索] ボックスに「Apex クラス」と入力し、[Apex クラス] を選択します。
-
[新規] をクリックします。表示された項目で、
Auth.AuthProviderPluginClassクラスを拡張する Apex クラスを作成します。このクラスのメソッドを使用して認証プロバイダーを作成します。getCustomMetadataTypeメソッドは、認証プロバイダーのカスタムメタデータ型 API 名を返します。getUserInfoメソッドは、登録ハンドラーが使用できるユーザーデータを返します。handleCallbackメソッドは、OAuth アクセストークンと OAuth の秘密または更新トークンを返します。また、認証プロバイダーの状態も返します。initiateメソッドは、ユーザーが認証を行う場所の URL を返します。refreshメソッドは、期限切れになったアクセストークンを更新する新しいアクセストークンを返します。
認証プロバイダーの設定
Salesforce で認証プロバイダーを設定します。生成された認証プロバイダー ID をメモします。この ID は、Auth.AuthToken Apex クラスで使用します。
- [設定] の [クイック検索] ボックスに「認証」と入力して、[認証プロバイダー] を選択します。
- [新規] をクリックします。
- プロバイダータイプには、カスタム認証プロバイダーを選択します。
- プロバイダーの名前を入力します。
-
クライアント設定 URL に使用する URL サフィックスを入力します。たとえば、プロバイダーの URL が MyAwesomeProvider の場合、SSO URL は
https://login.salesforce.com/auth/sso/00Dx00000000001/MyAwesomeProviderに似ています。 - 作成したカスタム項目にサードパーティの情報を入力します。
- セキュリティを強化する OAuth 2.0 Proof Key for Code Exchange (PKCE) 拡張を自動的に有効にするには、[Use Proof Key for Code Exchange (PKCE) Extension (Code Exchange (PKCE) 拡張を使用)] を選択します。この設定がプロバイダーのセキュリティ保護にどのように役立つかについての詳細は、「Proof Key for Code Exchange (PKCE) Extension (コード交換の証明鍵 (PKCE) 拡張機能)」を参照してください。
-
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 が生成されます。
- テスト専用初期化 URL — この URL を使用して、サードパーティが正しく設定されているかどうかをテストします。この URL を開いて、サードパーティにログインします。ログインすると、属性の対応付けと共に Salesforce にリダイレクトされます。
- シングルサインオン初期化 URL — この URL を使用して、サードパーティから組織への SSO を実行するようにユーザーをリダイレクトします。ユーザーは、この URL を開いて、サードパーティにログインします。サードパーティは、ユーザーアカウントを作成または更新して、そのアカウントでユーザーを Salesforce にログインさせます。
- 既存のユーザーをリンクする URL — この URL を使用して、組織のユーザーをサードパーティの既存のアカウントにリンクします。このユーザーはこの URL を開いてサードパーティにログインし、Salesforce にログインして、アカウント間のリンクを作成します。
- OAuth 専用初期化 URL — この URL を使用して、ユーザーの認証後に OAuth アクセストークンを取得します。このフローは、SSO はには対応していません。
- コールバック URL — 他の各クライアント設定 URL について、認証プロバイダーはコールバック URL に情報を送信します。
クライアント設定 URL は、他の要求パラメーターもサポートします。要求パラメーターを使用することで、認証プロバイダーに機能を追加できます。たとえば、要求パラメーターを使用することで、サードパーティから権限を取得したり、認証後にユーザーを別の場所にリダイレクトしたりできます。
サードパーティアプリケーションの更新
認証プロバイダーを Salesforce 組織で定義したら、サードパーティのサイトに戻ります。コールバック URL をカスタム認証プロバイダーの Web サイト URL として使用するように、アプリケーションを更新します。
SSO 接続のテスト
ブラウザーの認証プロバイダー設定ページでテスト専用初期化 URL を開きます。サードパーティのサイトにリダイレクトされ、サインインするよう求められます。その後、アプリケーションを承認するように求められます。アクセスを承認すると、再び Salesforce にリダイレクトされます。
ログインページへの認証プロバイダーの追加
認証プロバイダーをログインオプションとして表示するようにログインページを設定します。組織の SSO を設定しているのか、Experience Cloud サイトの SSO を設定しているかに応じて、このステップは異なります。
- 組織の場合、「組織のログインページへの認証プロバイダーの追加」を参照してください。
- Experience Cloud サイトの場合、「Experience Cloud サイトのログインページへの認証プロバイダーの追加」を参照してください。

