Loading
ただいま大変多くのお問い合わせをいただいており、ご連絡までにお時間を頂戴しております続きを読む
ユーザーの識別およびアクセス権の管理
特別なシナリオの OAuth 2.0 ユーザー名パスワードフロー

特別なシナリオの OAuth 2.0 ユーザー名パスワードフロー

すでにユーザーのログイン情報がある接続アプリケーション経由で、ユーザー名パスワードフローを使用してクライアントを承認できます。ただし、このフローはログイン情報をやりとりするため、使用を避けることをお勧めします。このフローの使用は、リソース所有者とクライアントの間に確固たる信頼があり、クライアントがファーストパーティアプリケーションで、Salesforce がデータを提供し、他の許可種別を使用できない場合に限定します。こうした場合、アクセス権が最小限になるようにユーザー権限を設定し、保存されているログイン情報を不正なアクセスから保護します。

必要なエディション

使用可能なインターフェース: Salesforce Classic および Lightning Experience の両方
使用可能なエディション: すべてのエディション
重要
重要 セキュリティを強化するために、ユーザー名パスワードフローの代わりに、コード交換の証明鍵 (PKCE) を使用する OAuth 2.0 Web サーバーフロー、または OAuth 2.0 クライアントログイン情報フローを使用することをお勧めします。また、すべての接続アプリケーションでユーザー名パスワードフローを使用できないようにブロックすることもお勧めします。Web サーバーフローを使用する手順は、「Web アプリケーションインテグレーションの OAuth 2.0 Web サーバーフロー」を参照してください。クライアントログイン情報フローを使用する手順は、「サーバー間インテグレーション用の OAuth 2.0 クライアントログイン情報フロー」を参照してください。ユーザー名パスワードフローをブロックする手順は、「認証フローをブロックしてセキュリティを強化」を参照してください。

ユーザー名パスワードフローは、アクセストークンを調査不可の Salesforce セッション ID として生成します。アクセストークンは一時的なものであるため、このフローを使用する接続アプリケーションに有効なセッションがあっても、[接続アプリケーションの OAuth の利用状況] ページには表示されません。このフローでは範囲や更新トークンはサポートされていません。Experience Cloud サイトでは、OAuth 2.0 ユーザー名パスワードフローはサポートされていません。

ユーザー名パスワードフローの主要な手順は、次のとおりです。

アクセストークンの要求

アクセストークンを要求するために、接続アプリケーションは、ユーザーのユーザー名とパスワードを帯域外 POST として Salesforce トークンエンドポイントに送信します。この POST は例です。

grant_type=password&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&
client_secret=1955279925675241571&
username=testuser@salesforce.com&
password=mypassword

POST に次のログイン情報を含めます。

重要
重要 OAuth インテグレーションを開発するときは、常に機密情報を POST 要求の本文または要求ヘッダーで渡します。機密情報を渡すために URL クエリ文字列で GET パラメーターを使用しないでください。機密情報には、ユーザー名、パスワード、OAuth トークン、クライアントの秘密、個人識別情報が含まれますが、これらに限定されません。セキュリティのベストプラクティスについての詳細は、『Secure Coding Guide (セキュアコーディングガイド)』の「Storing Sensitive Data (機密データの保存)」を参照してください。
パラメーター 説明
grant_type 接続アプリケーションが要求する OAuth 2.0 許可種別。このフローの値は password である必要があります。
client_id 接続アプリケーションのコンシューマー鍵。コンシューマー鍵にアクセスするには、アプリケーションマネージャーで接続アプリケーションを検索し、ドロップダウンから [表示] を選択します。次に、[コンシューマーの詳細を管理] をクリックします。コンシューマー鍵を表示する前に、ID を検証するように求められることがあります。
client_secret 接続アプリケーションのコンシューマーの秘密。コンシューマーの秘密にアクセスするには、アプリケーションマネージャーで接続アプリケーションを検索し、ドロップダウンから [表示] を選択します。次に、[コンシューマーの詳細を管理] をクリックします。コンシューマーの秘密を表示する前に、ID を検証するように求められることがあります。
username 接続アプリケーションが模倣するユーザーのユーザー名。
password

接続アプリケーションが模倣するユーザーのパスワード。

API でユーザー名パスワードフローを使用するときに、ユーザー名とパスワードのログイン画面内に、ユーザーがセキュリティトークンを入力できる項目を作成します。セキュリティトークンは、信頼されないネットワークから Salesforce にログインするためにパスワードの末尾に追加する必要のある鍵で、自動生成されます。認証要求を渡すときに、パスワードとトークンを連結します。

format

要求のヘッダーに含まれていない場合、予測される戻り形式を指定できます。format パラメーターは、要求ヘッダーより優先されます。次の形式がサポートされます。

  • urlencoded
  • json (デフォルト)
  • xml

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 トークン種別。アクセストークンを含むすべての応答で使用します。
メモ
メモ この応答は更新トークンを送信しません。
 
読み込み中
Salesforce Help | Article