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

ユーザ名パスワード OAuth 認証フローについて

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

Salesforce は、クライアントログイン情報許可方式をサポートしていません。

メモ

ユーザ名パスワード OAuth 認証フロー
  1. コンシューマはユーザのユーザ名とパスワードを使用してアクセストークンを要求します。これステップを行うには、適切な Salesforce トークン要求エンドポイント (https://login.salesforce.com/services/oauth2/token など) に対して帯域外 POST 要求を行います。次の要求項目は必須です。
    パラメータ 説明
    grant_type この認証フローの場合、password にする必要があります。
    client_id 接続アプリケーション定義の [コンシューマ鍵]
    client_secret 接続アプリケーション定義の [コンシューマの秘密][Web サーバフローの秘密が必要] 設定が接続アプリケーション定義で有効になっていない場合を除き、必須です。
    username エンドユーザのユーザ名。
    password エンドユーザのパスワード。

    ユーザのセキュリティトークンをユーザのパスワードに付加する必要があります。セキュリティトークンは、Salesforce で自動生成されたキーです。たとえば、ユーザのパスワードが mypassword で、セキュリティトークンが XXXXXXXXXX の場合は、このパラメータには、値 mypasswordXXXXXXXXXX を指定する必要があります。セキュリティトークンの詳細は、Salesforce ヘルプの「セキュリティトークンのリセット」を参照してください。

    メモ

    リクエストボディの例を次に示します。
    1grant_type=password&client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82Hn
    2FVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&client_secret=
    31955279925675241571&username=testuser%40salesforce.com&password=mypassword123456
  2. Salesforce はユーザログイン情報を検証し、成功したら、応答とアクセストークンをアプリケーションに送信します。この応答には次の値が含まれます。
    パラメータ 説明
    access_token アプリケーションが要求を行うために使用するセッション ID として機能するアクセストークン。このトークンは、ユーザログイン情報と同様に保護する必要があります。
    instance_url API コールの送信先となる Salesforce インスタンスを示します。
    id ユーザを識別し、ユーザの詳細を照会するために使用できる ID URL。エンドユーザに関する詳細な情報を取得するための HTTP 要求で使用できます。
    issued_at 署名が作成された日時。UNIX エポック (1970 年 1 月 1 日 00:00:00 UTC) からの秒数として表されます。
    signature 連結 ID と issued_at 値を含む client_secret (非公開鍵) で署名されている Base64 符号化された HMAC-SHA256 署名。signature を使用して、ID URL がサーバから送信されたときに変更されなかったことを確認します。
    レスポンスボディの例を次に示します。
    1{"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
    2"issued_at":"1278448832702","instance_url":"https://yourInstance.salesforce.com/",
    3"signature":"0CmxinZir53Yex7nE0TD+zMpvIWYGb/bdJh6XfOH6EQ=","access_token":
    4"00Dx0000000BV7z!AR8AQAxo9UfVkh8AlV0Gomt9Czx9LjHnSSpwBMmbRcgKFmxOtvxjTrKW1
    59ye6PE3Ds1eQz3z8jr3W7_VbWmEu4Q8TVGSTHxs"}
  3. アプリケーションは、提供されたアクセストークンを使用して保護されたユーザデータにアクセスします。
ユーザ名パスワード OAuth フローを使用するときの考慮事項は、次のとおりです。
  • このフローではユーザが Salesforce でログインするためにリダイレクトされることはないため、ユーザは直接アプリケーションを認証できません。そのため、更新トークンは使用できません。アプリケーションで更新トークンが必要な場合、Web サーバまたはユーザエージェントフローの使用を検討してください。