リソース所有者のパスワード資格証明権限付与タイプ

リソース所有者とクライアント(コンピュータのOSや特権があるアプリケーションなど)との間に信頼関係がある場合に、この付与タイプを使用します。これは、クライアントがパスワードを使用してアクセス・トークンを取得した後、そのパスワードを破棄する必要があるためです。

次のダイアグラムに、リソース所有者のパスワード資格証明権限付与タイプのフローを示します。

リソース所有者のパスワード資格証明権限付与タイプのフローを示す図。

このOAuthフロー:

  1. ユーザーはクライアント・アプリケーションでリンクをクリックし、保護されているリソースへのアクセスをリクエストします。

  2. クライアント・アプリケーションは、リソース所有者のユーザー名とパスワードをリクエストします。

  3. ユーザーは、自分のユーザー名とパスワードでサインインします。

  4. クライアント・アプリケーションは、これらの資格証明を認可サーバーからアクセス・トークン(多くの場合、リフレッシュ・トークン)と交換します。

  5. 認可サーバーは、クライアント・アプリケーションにアクセス・トークンを返します。

  6. クライアント・アプリケーションは、APIコールでアクセス・トークンを使用して、保護されているデータ(ユーザーのリストなど)を取得します。

機能 選択可能
クライアントの認証が必要 いいえ
クライアントがユーザー資格証明情報が必要 はい
ブラウザベースのエンド・ユーザーとの対話 いいえ
認証のために外部アイデンティティ・プロバイダの使用が可能 いいえ
リフレッシュ・トークンを許可 はい
アクセス・トークンがエンド・ユーザーのコンテキスト内 はい

リソース所有者のパスワード資格証明付与タイプの認可フローの例を参照してください。

リソース所有者のパスワード資格証明権限付与タイプの認可フローの例

この認可フロー例では、リソース所有者の(ユーザー)資格証明を使用したアクセス・トークン取得の流れを示しています。

アイデンティティ・ドメイン・コンソールでリソース所有者付与タイプを使用してアプリケーションを作成する場合:

  • アプリケーションのタイプとして「信頼できるアプリケーション」を指定します。

  • 権限付与タイプとして「Resource Owner」を選択します。

  • 認証リクエストへのレスポンスの送信先になる「リダイレクトURI」を指定します。

リソース所有者のパスワード資格証明権限付与タイプおよび認可フロー・ダイアグラムの詳細は、リソース所有者のパスワード資格証明権限付与タイプを参照してください。

承認フロー

  1. ユーザーはWebサーバー・アプリケーションでリンクをクリックし、サードパーティのWebサーバー・アプリケーションから保護されているリソースへのアクセスをリクエストします。

  2. クライアント・アプリケーションは、ユーザーのユーザー名とパスワードを収集し、OAuth認可サーバー(AS)からアクセス・トークンをリクエストします。

    リクエストURLには、リクエストされているアクセスのタイプを示す問合せパラメータが含まれます。

    認可ヘッダーを使用したリクエストの例

       curl -i
       -H 'Authorization: Basic <base64Encoded clientid:secret>'
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'
       --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&scope=<scope value>'

    リクエストにリフレッシュ・トークンを含む認可ヘッダーを使用したリクエストの例

       curl -i
       -H 'Authorization: Basic <base64Encoded clientid:secret>'
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'
       --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&scope=<Resource Server Scope>%20offline_access'

    JWTクライアント・アサーションを使用したリクエストの例

       curl -i
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'
       --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&client_id=<client-id>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<client-assertion>&scope=<scope value>'

    リクエストにリフレッシュ・トークンを含むJWTクライアント・アサーションを使用したリクエストの例

       curl -i
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'
       --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&client_id=<client-id>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<client-assertion>&scope=<Resource Server Scope>%20offline_access'
  3. OAuth認可サーバーはアクセス・トークンを返します。アクセス・トークンには、リクエスト元のクライアント・アプリケーションおよびクライアントのリクエストで指定されたユーザー(ある場合)に付与されたアイデンティティ・ドメイン・アプリケーション・ロールによって表される権限に基づいて、適用可能なすべてのスコープが含まれます。

    ノート

    無効なスコープに対してリクエストが実行されると、アクセス・トークンではなくエラーが返されます。
  4. リクエスト・サイトは、APIコールでアクセス・トークンを使用して、保護されているデータを取得します。