特別なシナリオの OAuth 2.0 ユーザー名パスワードフロー
すでにユーザーのログイン情報がある接続アプリケーション経由で、ユーザー名パスワードフローを使用してクライアントを承認できます。ただし、このフローはログイン情報をやりとりするため、使用を避けることをお勧めします。このフローの使用は、リソース所有者とクライアントの間に確固たる信頼があり、クライアントがファーストパーティアプリケーションで、Salesforce がデータを提供し、他の許可種別を使用できない場合に限定します。こうした場合、アクセス権が最小限になるようにユーザー権限を設定し、保存されているログイン情報を不正なアクセスから保護します。
必要なエディション
| 使用可能なインターフェース: Salesforce Classic および Lightning Experience の両方 |
| 使用可能なエディション: すべてのエディション |
ユーザー名パスワードフローは、アクセストークンを調査不可の Salesforce セッション ID として生成します。アクセストークンは一時的なものであるため、このフローを使用する接続アプリケーションに有効なセッションがあっても、[接続アプリケーションの OAuth の利用状況] ページには表示されません。このフローでは範囲や更新トークンはサポートされていません。Experience Cloud サイトでは、OAuth 2.0 ユーザー名パスワードフローはサポートされていません。
ユーザー名パスワードフローの主要な手順は、次のとおりです。
- 接続アプリケーションは Salesforce トークンエンドポイントにユーザーのログイン情報を送信してアクセストークンを要求します。
- 要求の確認後、Salesforce は接続アプリケーションにアクセストークンを付与します。
- 接続アプリケーションはアクセストークンを使用して、ユーザーの代わりに保護されたデータにアクセスできます。
アクセストークンの要求
アクセストークンを要求するために、接続アプリケーションは、ユーザーのユーザー名とパスワードを帯域外 POST として Salesforce トークンエンドポイントに送信します。この POST は例です。
grant_type=password&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&
client_secret=1955279925675241571&
username=testuser@salesforce.com&
password=mypasswordPOST に次のログイン情報を含めます。
| パラメーター | 説明 |
|---|---|
grant_type
|
接続アプリケーションが要求する OAuth 2.0 許可種別。このフローの値は password である必要があります。 |
client_id
|
接続アプリケーションのコンシューマー鍵。コンシューマー鍵にアクセスするには、アプリケーションマネージャーで接続アプリケーションを検索し、ドロップダウンから [表示] を選択します。次に、[コンシューマーの詳細を管理] をクリックします。コンシューマー鍵を表示する前に、ID を検証するように求められることがあります。 |
client_secret
|
接続アプリケーションのコンシューマーの秘密。コンシューマーの秘密にアクセスするには、アプリケーションマネージャーで接続アプリケーションを検索し、ドロップダウンから [表示] を選択します。次に、[コンシューマーの詳細を管理] をクリックします。コンシューマーの秘密を表示する前に、ID を検証するように求められることがあります。 |
username
|
接続アプリケーションが模倣するユーザーのユーザー名。 |
password
|
接続アプリケーションが模倣するユーザーのパスワード。 API でユーザー名パスワードフローを使用するときに、ユーザー名とパスワードのログイン画面内に、ユーザーがセキュリティトークンを入力できる項目を作成します。セキュリティトークンは、信頼されないネットワークから Salesforce にログインするためにパスワードの末尾に追加する必要のある鍵で、自動生成されます。認証要求を渡すときに、パスワードとトークンを連結します。 |
format
|
要求のヘッダーに含まれていない場合、予測される戻り形式を指定できます。
|
Salesforce によるアクセストークンの付与
要求の確認後、Salesforce からクライアントにレスポンスが送信されます。
応答の例を次に示します。
{"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
"issued_at":"1278448832702",
"instance_url":"https://yourInstance.salesforce.com/",
"signature":"0CmxinZir53Yex7nE0TD+zMpvIWYGb/bdJh6XfOH6EQ=",
"access_token":"00Dx0000000BV7z!AR8AQAxo9UfVkh8AlV0Gomt9Czx9LjHnSSpwBMmbRcgKFmxOtvxjTrKW19ye6PE3Ds1eQz3z8jr3W7_VbWmEu4Q8TVGSTHxs",
"token_type":"Bearer"}次のパラメーターはレスポンスボディ内にあります。
| パラメーター | 説明 |
|---|---|
id
|
ユーザーを識別し、ユーザーの詳細を照会するために使用できる ID URL。「ID URL」を参照してください。 |
issued_at
|
署名が作成されたときのタイムスタンプ (ミリ秒)。 |
instance_url
|
ユーザーの組織のインスタンスを示す URL。例: https://yourInstance.salesforce.com/。
|
signature
|
client_secret で署名されている Base64 エンコードされた HMAC-SHA256 署名。署名には連結された ID と issued_at value を含めることができます。これらを使用して ID URL がサーバーから送信された後に変更されていないことを確認できます。 |
access_token
|
接続アプリケーションがクライアントアプリケーションの代わりに保護されたリソースへのアクセスを要求するために使用する OAuth トークン。範囲の形式の追加権限にはアクセストークンが付随することがあります。 |
token_type
|
Bearer トークン種別。アクセストークンを含むすべての応答で使用します。
|

