安全なサーバでホストされているアプリケーションでは、Web サーバ認証フローを使用します。Web サーバフローにおける重要な点は、サーバがコンシューマの秘密を保護できる必要があります。
このフローでは、クライアントアプリケーションは、ユーザを認証してアプリケーションに認証コードを送信する他の Web サーバまたはリソースにユーザをリダイレクトするように認証サーバに要求します。アプリケーションは認証コードを使用してアクセストークンを要求します。このフローの手順は、次のとおりです。
- アプリケーションはユーザを適切な Salesforce 認証エンドポイント (https://login.salesforce.com/services/oauth2/authorize など) にリダイレクトします。次のパラメータは必須です。
| response_type |
この認証フローの場合、code にする必要があります。 |
| client_id |
接続アプリケーション定義の [コンシューマ鍵]。 |
| redirect_uri |
接続アプリケーション定義の [コールバック URL]。 |
次のパラメータは省略可能です。
| display |
ログインページの表示の種類を変更します。有効な値は、次のとおりです。
- page — 全画面のページ認証。これは、値が指定されていない場合のデフォルト値です。
- popup — 最新の Web ブラウザのポップアップウィンドウ用に最適化されたコンパクトなダイアログ。
- touch — Android や iPhone など、最新のスマートフォン用に設計されたモバイル用に最適化されたダイアログ。
- mobile — BlackBerry OS 5 など、タッチスクリーンをサポートしていないスマートフォン用に設計された、モバイル用に最適化されたダイアログ。
|
| immediate |
ログインと承認についてユーザにプロンプトメッセージを表示するかどうかを決定します。値は、true か false のいずれかです。デフォルトは false です。
|
| state |
承認後にコールバック URL で返される、追加の URL 符号化された状態データを指定します。 |
| scope |
アプリケーションがアクセスできるデータを指定します。詳細は、オンラインヘルプの「範囲パラメータの値」を参照してください。 |
| prompt |
認証サーバがユーザに再認証および再承認を求める方法を指定します。このパラメータは省略可能です。Salesforce でサポートされる値は、次のとおりです。
- login — 認証サーバがユーザに再認証を求める必要があり、ユーザに強制的に再ログインさせます。
- consent — クライアントに情報を戻す前に、認証サーバがユーザに再認証を求める必要があります。
ユーザにログインおよび再認証の両方を求めるには、スペースで区切られた両方の値を渡すことが有効です。以下に例を示します。
|
認証 URL の例は、次のようになります。
- ユーザが自分のログイン情報で Salesforce にログインします。ユーザは認証エンドポイントを直接操作するため、アプリケーションがユーザのログイン情報を認識することはありません。ログインに成功したら、ユーザはアプリケーションを認証するように要求されます。ユーザがすでにアプリケーションを認証している場合、このステップはスキップされます。
- クライアントアプリケーションが認証されたことが Salesforce で確認されると、エンドユーザの Web ブラウザは、redirect_uri パラメータで指定されたコールバック URL にリダイレクトされます。Salesforce は、認証情報を次の値でリダイレクト URL に付加します。
| code |
コンシューマがアクセストークンと更新トークンを取得するために使用する必要がある認証コード。 |
| state |
最初の要求の一部として渡される状態値 (該当する場合のみ)。 |
認証情報が付属するコールバック URL の例は、次のようになります。
- アプリケーションは認証コードを抽出して、これをアクセストークン要求に含めて Salesforce に渡す必要があります。この要求は、適切な Salesforce トークン要求エンドポイント (https://login.salesforce.com/services/oauth2/token など) に対して送信される POST 要求です。次のパラメータは必須です。
| grant_type |
このフローの値は authorization_code である必要があります。 |
| client_id |
接続アプリケーション定義の [コンシューマ鍵]。 |
| client_secret |
接続アプリケーション定義の [コンシューマの秘密]。 |
| redirect_uri |
接続アプリケーション定義の [コールバック URL]。 |
| code |
コンシューマがアクセストークンと更新トークンを取得するために使用する必要がある認証コード。 |
次のパラメータは省略可能です。
| format |
期待される戻り形式。デフォルトは json です。値は次のとおりです。
|
アクセストークン POST 要求の例は、次のようになります。
- この要求が成功した場合、サーバは次の内容を持つレスポンスボディを返します。
| access_token |
アプリケーションが要求を行うために使用するセッション ID として機能するアクセストークン。このトークンは、ユーザログイン情報と同様に保護する必要があります。 |
| refresh_token |
新しいアクセストークンを取得するために将来使用できるトークン。この値は秘密です。ユーザのパスワードなどと同様に処理し、適切な手段で保護する必要があります。
|
| instance_url |
API コールの送信先となる Salesforce インスタンスを示します。 |
| id |
ユーザ、およびユーザの詳細に関するクエリの両方を識別するために使用できる ID URL。エンドユーザに関する詳細な情報を取得するための HTTP 要求で使用できます。 |
| issued_at |
署名が作成された日時。UNIX エポック (1970 年 1 月 1 日 00:00:00 UTC) からの秒数として表されます。 |
| signature |
連結 ID と issued_at 値を含むコンシューマの非公開鍵で署名されている Base64 符号化された HMAC-SHA256 署名。この signature は、ID URL がサーバから送信された後に変更されていないことを確認するために使用できます。 |
JSON レスポンスボディの例は、次のようになります。
- アプリケーションは、提供されたアクセストークンと更新トークンを使用して保護されたユーザデータにアクセスします。