この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

カスタム認証プロバイダプラグインの作成

Apex を使用して、Salesforce へのシングルサインオン (SSO) 用に OAuth ベースのカスタム認証プロバイダプラグインを作成できます。

シングルサインオン (SSO) を使用すると、ユーザが 1 回のログインで複数の承認済みネットワークリソースにアクセスできます。企業ユーザのデータベースまたはクライアントアプリケーションに対してユーザ名とパスワードを検証でき、リソースごとに個別の Salesforce 管理のパスワードは必要ありません。Salesforce は標準でシングルサインオン用の外部認証プロバイダとして Facebook や Google、LinkedIn などをサポートし、OpenID Connect プロトコルを実装するサービスプロバイダもサポートしています。Apex を使用してプラグインを作成することで、OAuth ベースの独自の認証プロバイダを追加できます。また、ユーザは、Salesforce 組織で Salesforce 以外のアプリケーションにすでに使用している SSO ログイン情報を使用できます。

Apex クラスを作成する前に、認証プロバイダのカスタムメタデータ型レコードを作成します。詳細は、「カスタム外部認証プロバイダの作成」を参照してください。

ユーザ情報を handleCallback メソッドからの応答で取得するか、別のメソッドによって取得するかを選択できます。ただし、オブジェクトの混在に関するエラーの発生を回避するには、カスタム認証ハンドラで引き続き getUserInfo を呼び出す必要があります。たとえば、getUserInfo をコールせずに Auth.RegistrationHandler.createUser メソッドに取引先責任者を挿入しようとすると、「You cannot mix EntityObjects with different UddInfos within one transaction (1 つのトランザクション内で EntityObjects と異なる UddInfos を混在させることはできません)」というエラーが表示されます。

このエラーを回避するには、次のようにダミーのユーザ情報を指定して getUserInfo をコールします。

メモ

サンプルクラス

この例では、抽象クラス Auth.AuthProviderPluginClass を拡張して、Concur という外部認証プロバイダを設定します。次の順序で、サンプルクラスとサンプルテストクラスを作成します。
  1. Concur
  2. ConcurTestStaticVar
  3. MockHttpResponseGenerator
  4. ConcurTestClass

サンプルテストクラス

次の例には、Concur のテストクラスが含まれています。