リソース所有者のパスワード資格証明権限付与タイプ
リソース所有者とクライアント(コンピュータのOSや特権があるアプリケーションなど)との間に信頼関係がある場合に、この付与タイプを使用します。これは、クライアントがパスワードを使用してアクセス・トークンを取得した後、そのパスワードを破棄する必要があるためです。
次のダイアグラムに、リソース所有者のパスワード資格証明権限付与タイプのフローを示します。
このOAuthフロー:
-
ユーザーはクライアント・アプリケーションでリンクをクリックし、保護されているリソースへのアクセスをリクエストします。
-
クライアント・アプリケーションは、リソース所有者のユーザー名とパスワードをリクエストします。
-
ユーザーは、自分のユーザー名とパスワードでサインインします。
-
クライアント・アプリケーションは、これらの資格証明を認可サーバーからアクセス・トークン(多くの場合、リフレッシュ・トークン)と交換します。
-
認可サーバーは、クライアント・アプリケーションにアクセス・トークンを返します。
-
クライアント・アプリケーションは、APIコールでアクセス・トークンを使用して、保護されているデータ(ユーザーのリストなど)を取得します。
機能 | 選択可能 |
---|---|
クライアントの認証が必要 | いいえ |
クライアントがユーザー資格証明情報が必要 | はい |
ブラウザベースのエンド・ユーザーとの対話 | いいえ |
認証のために外部アイデンティティ・プロバイダの使用が可能 | いいえ |
リフレッシュ・トークンを許可 | はい |
アクセス・トークンがエンド・ユーザーのコンテキスト内 | はい |
リソース所有者のパスワード資格証明権限付与タイプの認可フローの例
この認可フロー例では、リソース所有者の(ユーザー)資格証明を使用したアクセス・トークン取得の流れを示しています。
アイデンティティ・ドメイン・コンソールでリソース所有者付与タイプを使用してアプリケーションを作成する場合:
-
アプリケーションのタイプとして「信頼できるアプリケーション」を指定します。
-
権限付与タイプとして「Resource Owner」を選択します。
-
認証リクエストへのレスポンスの送信先になる「リダイレクトURI」を指定します。
リソース所有者のパスワード資格証明権限付与タイプおよび認可フロー・ダイアグラムの詳細は、リソース所有者のパスワード資格証明権限付与タイプを参照してください。
承認フロー
-
ユーザーはWebサーバー・アプリケーションでリンクをクリックし、サードパーティのWebサーバー・アプリケーションから保護されているリソースへのアクセスをリクエストします。
-
クライアント・アプリケーションは、ユーザーのユーザー名とパスワードを収集し、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'
-
OAuth認可サーバーはアクセス・トークンを返します。アクセス・トークンには、リクエスト元のクライアント・アプリケーションおよびクライアントのリクエストで指定されたユーザー(ある場合)に付与されたアイデンティティ・ドメイン・アプリケーション・ロールによって表される権限に基づいて、適用可能なすべてのスコープが含まれます。
ノート
無効なスコープに対してリクエストが実行されると、アクセス・トークンではなくエラーが返されます。 -
リクエスト・サイトは、APIコールでアクセス・トークンを使用して、保護されているデータを取得します。