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

リソース所有者およびクライアント(コンピュータの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'

    mTLSを使用したリクエストの例

    secureDomainURLの取得方法については、「アクセス権限タイプ」を参照してください。

    curl -v \
    --cert cert.crt \
    --key key.key \
    --cacert ca.crt \
    --location '<secureDomainURL>/oauth2/v1/token' \
    --header 'Authorization: Basic <base64Encoded clientid:secret>'
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'grant_type=client_credentials' \
    --data-urlencode 'client_id=<client-id>' \
    --data-urlencode 'scope=urn:opc:idm:_myscopes_'
  3. OAuth認可サーバーはアクセス・トークンを返します。アクセス・トークンには、リクエスト元のクライアント・アプリケーションに付与されたアイデンティティ・ドメイン・アプリケーション・ロールと、クライアントのリクエストで指定されたユーザー(存在する場合)によって表される権限に基づいて、適用可能なすべてのスコープが含まれます。

    ノート

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