Salesforce 間連携における認証設定のガイド:フローからのコールアウトを例に
Salesforce 組織間の連携は、ビジネスプロセスを自動化し、効率を高める上で非常に重要です。しかし、クライアント側の Salesforce 組織から外部 (サーバー側) の Salesforce 組織をコールアウトする際の認証設定は、複雑で挫折しやすいポイントでもあります。
この記事では、接続アプリケーション (Connected Application)、認証プロバイダー (Auth Provider)、指定ログイン情報 (Named Credentials)、外部ログイン情報 (External Credentials)、プリンシパル (Principals) などの設定手順を、ハンズオン形式で軌跡を共有します
前提知識
Salesforce 間連携における認証設定には、以下のコンポーネントが関係します。
- 接続アプリケーション (Connected App):サーバー側の Salesforce 組織で作成し、クライアント側からのアクセスを許可するための設定。
- 認証プロバイダー (Auth Provider):クライアント側の Salesforce 組織で作成し、認証方式 (今回は Salesforce) やコンシューマ鍵/コンシューマの秘密 (Consumer Key/Secret) などの情報を定義する。
- 指定ログイン情報 (Named Credentials):クライアント側の Salesforce 組織で作成し、サーバー側の Salesforce 組織への URL や認証プロトコル (OAuth 2.0) などを定義する。
- 外部ログイン情報 (External Credentials):クライアント側の Salesforce 組織で作成し、認証プロバイダーや認証フロータイプ (Browser Flow) などを指定する。
- プリンシパル (Principals):外部ログイン情報に紐づけて、認証を行うユーザーや権限セットを定義する。
これらのコンポーネントを適切に設定することで、クライアント側の Salesforce 組織のフローから、サーバー側の Salesforce 組織を安全にコールアウトできるようになります。
ハンズオン:Salesforce 組織間連携の設定
このハンズオンでは、以下の2つの Salesforce 組織を使用します。
- クライアント側組織:フローからコールアウトを行う側の組織
- サーバー側組織:コールアウトを受け付ける側の組織
1. 準備:Salesforce 組織の発行
まずは、クライアント側組織とサーバー側組織を発行します。
https://developer.salesforce.com/signup
ユーザー名は識別しやすいように設定してください。
認証メールが来たらパスワードを設定し、それぞれIDと合わせて控えます。
(注意) 両方の組織に同じブラウザプロファイルでログインすると混乱を招く可能性があるため、片方はシークレットモードでアクセスすることをお勧めします。
2. サーバー側 Salesforce 組織の設定
2.1. 接続アプリケーションの作成
サーバー側組織で、クライアント側組織からのアクセスを許可するための接続アプリケーションを作成します。
-
[設定] > [アプリケーションマネージャー] > [新規接続アプリケーション] を選択します。
- 特にこだわりがなければ "Create a Connected App" を選択します。
-
接続アプリケーション名、API 参照名、取引先責任者メール を入力します (任意)。
-
[OAuth 設定を有効化] をオンにします。
- コールバック URL は、現時点では任意の値で構いません (後でクライアント側の設定で置き換えます)。
-
選択可能な OAuth 範囲 は、必要に応じて選択します (不明な場合は全て追加しておくと安全です)。
- 今回はハンズオンのため、[Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows] はオフにしておきます。
- [保存] をクリックします。
2.2. コンシューマ鍵とコンシューマの秘密の確認
作成された接続アプリケーションの コンシューマ鍵 (Consumer Key) と コンシューマの秘密 (Consumer Secret) を確認し、安全な場所に控えておきます。これらはクライアント側の設定で使用します。
3. クライアント側 Salesforce 組織の設定
3.1. 認証プロバイダーの設定
クライアント側組織で、認証プロバイダーを設定します。
-
[設定] > [認証プロバイダー] > [新規] を選択します。
- プロバイダタイプ で [Salesforce] を選択します。
- 名前 などを入力します (任意)。
- コンシューマ鍵 と コンシューマの秘密 に、サーバー側組織で控えた値を入力します。
-
[Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows] はオフにしておきます。
- [保存] をクリックします。
3.2. コールバック URL の確認と更新
作成された認証プロバイダーの下部にある コールバック URL をコピーします。
サーバー側組織の接続アプリケーションに戻り、コールバック URL を先ほどコピーした値に更新します。
3.3. 外部ログイン情報の設定
クライアント側組織で、外部ログイン情報を作成します。
-
[設定] > [指定ログイン情報] > [外部ログイン情報] > [新規] をクリックします。
- 表示ラベル、名前を入力します。
- 認証プロトコル で [OAuth 2.0] を選択します。
- 認証フロー種別 で [Browser Flow] を選択します。
-
認証プロバイダ で、先ほど作成した認証プロバイダーを選択します。
- [保存] をクリックします。
3.4. 指定ログイン情報の設定
クライアント側組織で、指定ログイン情報を作成します。
-
[設定] > [指定ログイン情報] > [新規] をクリックします。
-
表示ラベル、名前などを入力します。
-
URL には、サーバー側組織の [私のドメイン] の [現在の私のドメインの URL] をコピーし、"https://" と合わせてペーストします(例:
https://yourdomain-dev-ed.my.salesforce.com
)。
4. 外部ログイン情報 で、先ほど作成した外部ログイン情報を選択します。
5. **[保存]**をクリックします。
3.5. プリンシパルの設定
外部ログイン情報に戻り、プリンシパル セクションで [新規] をクリックします。
プリンシパル へ追加した 権限セット に対し、"External Credential Principal Access" を選択します。
"Edit" を選択し、該当の権限セットを プリンシパル に追加し保存する。
3.6. 認証の実行
再度、外部ログイン情報に戻ります。
プリンシパルの [アクション] 列にあるトグルから [認証] を選択します。
ログイン画面が表示されたら、サーバー側組織 の ID/PW でログインします。
許可を求められたら、[許可] をクリックします。
認証が成功すると、外部ログイン情報の 認証状況 が [設定済み] になります。
4. フローでのコールアウト設定
これで、クライアント側の Salesforce 組織のフローから、サーバー側の Salesforce 組織をコールアウトするための設定が完了しました。
フローで外部サービスをコールアウトする際には、作成した指定ログイン情報を選択することで、認証情報を意識せずに安全に連携できます。
まとめ
Salesforce 組織間の連携設定は複雑ですが、手順を追って設定することで、安全かつ効率的な連携を実現できます。この記事が、Salesforce 間連携の認証設定でつまずいている方の助けになれば幸いです。