外部システムからSalesforce REST APIへ接続する手順
外部クライアントアプリを準備し、パスワードを使わないフローで認証してSalesforce REST APIを呼び出すまでの手順を説明します。
なぜ認証の設計が要るのか
外部システムからSalesforceのREST APIを呼ぶときも、必ず誰かとしてログインした状態が要ります。データを扱うエンドポイントは、匿名では叩けません。呼び出す側のユーザにAPIへのアクセス権があるか、そのユーザのプロファイルで「API の有効化」が許可されているかを、まず確認します。
接続アプリケーションは新規作成できない
Spring '26以降、Salesforceは新規の接続アプリケーション(Connected App)の作成を既定で止めています。API・画面のどちらから作成しようとしても、パッケージのインストールで作られる場合を除いてブロックされます。既存の接続アプリケーションはそのまま動きますが、これから外部システムを繋ぐなら、次世代版の外部クライアントアプリ(External Client App)を使います。
外部クライアントアプリを作る
App Managerを開く
「設定」の検索欄で「App Manager」を開きます。
新規外部クライアントアプリを選ぶ
一覧右上の「新規外部クライアントアプリ」から、アプリ名・API参照名・連絡先メール(
xxxxxxxx@example.com)を入力します。OAuth設定を有効化する
「OAuth設定を有効化」をオンにし、コールバックURLと、必要なOAuth範囲だけを選びます。範囲は広く取らず、実際に使う分だけにします。
保存してコンシューマの詳細を確認する
保存後、アプリの操作メニューから「表示」を開き、「コンシューマの詳細を管理」でコンシューマ鍵とコンシューマの秘密を確認します。本人確認を求められ、表示できる時間も限られています。控えたら、安全な場所に保管します。
接続に使うユーザの権限を絞る
接続用のユーザには、システム管理者のプロファイルを使いません。最小権限のプロファイルにユーザを所属させ、必要なオブジェクト・項目へのアクセスだけを権限セットで足します。プロファイルで「API の有効化」が許可されていることも確認します。この連携が何にアクセスできるかを、権限セット1つで説明できる状態が目安です。
フローを選ぶ
| フロー | 向いている場面 | 特徴 |
|---|---|---|
| クライアントクレデンシャル | サーバー間の定期連携、ユーザの操作を挟まない | コンシューマ鍵とコンシューマの秘密だけで認証。指定した統合ユーザとして実行される |
| JWTベアラー | サーバー間の自動連携、証明書を管理できる | デジタル証明書で署名したJWTを送る。パスワードを一切使わない |
| 認可コード(PKCE付き) | ユーザ自身が同意してログインするWebアプリ | ブラウザ経由でユーザがログインし、同意した範囲だけにアクセスする |
⚠️ ユーザ名パスワードフローは使いません。Summer '23以降に作成された組織では既定でブロックされています。ユーザ名とパスワードをそのまま送る形なので、Salesforceも上の3つのフローへの切り替えを勧めています。
クライアントクレデンシャルフローで接続する
ユーザの操作を挟まない定期連携なら、クライアントクレデンシャルフローが単純です。外部クライアントアプリでこのフローを構成し、実行ユーザに接続用ユーザを指定してから、トークンエンドポイントへ次のリクエストを送ります。
curl -X POST "https://xxxx.my.salesforce.com/services/oauth2/token" \ -d "grant_type=client_credentials" \ -d "client_id=xxxxxxxx" \ -d "client_secret=xxxxxxxx"
コンシューマ鍵とコンシューマの秘密だけでアクセストークンを取得します。パスワードは送りません。
レスポンスの access_token を、以降のAPI呼び出しの Authorization: Bearer に使います。
アクセストークンでオブジェクトの情報を取得する
curl "https://xxxx.my.salesforce.com/services/data/v67.0/sobjects/Account/describe" \ -H "Authorization: Bearer xxxxxxxx"
取引先のメタ情報を取得します。バージョンは数値のほか latest も指定できます。
バージョンを付けない /services/data/ へのGETは認証なしで叩け、利用できるバージョン一覧がそのまま返ります。接続先の組織がどのバージョンまで対応しているかを、ここで確かめられます。
ここで間違えやすい
| 間違い | 何が起きるか |
|---|---|
| 接続アプリケーションを新規作成しようとする | Spring '26以降は既定でブロックされます。外部クライアントアプリを使います |
| ユーザ名パスワードフローで組もうとする | 新しい組織では既定でブロックされ、認証が通りません |
| 接続用ユーザにシステム管理者権限を与える | 侵害時の影響が広がります。権限セットで必要な分だけ足します |
| OAuth範囲を全部選んでおく | 実際に使わない範囲まで許可され、監査時に説明できません |
確認した環境
- 2026年9月/Salesforce Summer '26(APIバージョン67.0)時点の公式ドキュメントで、接続アプリケーションの制限とOAuthフローを確認しています
まとめ
- 新規の接続アプリケーションはSpring '26以降作成できません。外部クライアントアプリを使います
- ユーザ名パスワードフローは既定でブロックされています。クライアントクレデンシャル・JWTベアラー・認可コード(PKCE付き)のいずれかを選びます
- 接続用ユーザは最小権限のプロファイルにし、権限セットで必要な範囲だけ足します
- コンシューマ鍵とコンシューマの秘密は、本人確認のうえ限られた時間だけ表示されます
参考:当時の画面
記事を最初に書いた当時の画面です。いまの手順と違うところは、各画像の説明に書いています。
Salesforceの導入・運用についてご相談ください
導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。