翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
トークン発行者のエンドポイント
の OAuth 2.0 トークンエンドポイント/oauth2/token
を発行します。これらのトークンは、ユーザープールによる認証の最終結果です。これには、ユーザー (ID トークン)、ユーザーのアクセスレベル (アクセストークン)、サインインセッションを維持するユーザーの権限 (トークンの更新) に関する情報が含まれます。OpenID Connect (OIDC) の依存パーティライブラリは、このエンドポイントへのリクエストとレスポンスペイロードを処理します。トークンは、検証可能な認証証明、プロファイル情報、バックエンドシステムへのアクセスメカニズムを提供します。
ユーザープール OAuth 2.0 認証サーバーは、トークンエンドポイントから次のタイプのセッションにJSONウェブトークン (JWTs) を発行します。
-
認可コード付与のリクエストを完了したユーザー。コードの引き換えに成功すると、ID、アクセス、更新の各トークンが返されます。
-
クライアント認証情報の付与を完了した M achine-to-machine (M2M) セッション。クライアントシークレットによる認可が成功すると、アクセストークンが返されます。
-
以前にサインインし、更新トークンを受け取ったユーザー。更新トークン認証は、新しい ID トークンとアクセストークンを返します。
注記
ホストされた UI で、またはフェデレーションを介して認証コード許可でサインインするユーザーは、トークンエンドポイントからトークンを常に更新できます。API オペレーションでサインイン
InitiateAuth
し、記憶されたデバイスがユーザープールでアクティブでないときにトークンエンドポイントでトークンを更新AdminInitiateAuth
できるユーザー。記憶されたデバイスがアクティブな場合は、InitiateAuth
またはAdminInitiateAuth
APIリクエストAuthFlow
REFRESH_TOKEN_AUTH
の を使用してトークンを更新します。
ユーザープールにドメインを追加すると、トークンエンドポイントが公開されます。HTTP POST リクエストを受け入れます。アプリケーションセキュリティについては、認証コードサインインイベントPKCEで を使用します。PKCE は、認証コードを渡すユーザーが認証したユーザーと同じであることを確認します。の詳細についてはPKCE、IETF「7636RFC
ユーザープールアプリケーションクライアントとその許可タイプ、クライアントシークレット、承認されたスコープ、クライアントの詳細については、IDs「」を参照してくださいアプリケーションクライアントでのアプリケーション固有の設定。M2M 認証、クライアント認証情報の付与、アクセストークンスコープを使用した認証の詳細については、「」を参照してくださいスコープ、M2M 、および APIsリソースサーバー。
アクセストークンからユーザーに関する情報を取得するには、 userInfo エンドポイントまたは に渡します。 GetUser API リクエスト。
POST /oauth2/token
/oauth2/token
エンドポイントは HTTPS POST
のみをサポートします。ユーザープールクライアントは、ブラウザ経由ではなく、このエンドポイントに直接リクエストを送信します。
トークンエンドポイントは client_secret_basic
と client_secret_post
をサポートしています。OpenID Connect 仕様の詳細については、「クライアント認証
ヘッダーのリクエストパラメータ
Authorization
-
クライアントにシークレットが発行された場合、クライアントはその
client_id
と を認証ヘッダーclient_secret
にclient_secret_basic
HTTP認証として渡すことができます。および をリクエスト本文client_id
client_secret
にclient_secret_post
認証として含めることもできます。認証ヘッダー文字列は基本
です Base64Encode(client_id:client_secret)
。次の例は、Base64-encodedされたバージョンの文字列 を使用したabcdef01234567890
、クライアントシークレットdjc98u3jiedmi283eu928
を持つアプリケーションクライアントの認証ヘッダーですdjc98u3jiedmi283eu928:abcdef01234567890
。Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
Content-Type
-
このパラメータの値を
'application/x-www-form-urlencoded'
に設定します。
本文のリクエストパラメータ
grant_type
-
(必須) リクエストするOIDCグラントのタイプ。
authorization_code
、refresh_token
、またはclient_credentials
を指定する必要があります。以下の条件下で、トークンエンドポイントからカスタムスコープのアクセストークンをリクエストできます。-
アプリケーションクライアント設定でリクエストされたスコープを有効にしました。
-
クライアントシークレットを使用してアプリケーションクライアントを設定しました。
-
アプリケーションクライアントでクライアント認証情報の付与を有効にします。
-
client_id
-
(オプション) ユーザープール内のアプリケーションクライアントの ID。ユーザーを認証したのと同じアプリケーションクライアントを指定します。
クライアントがパブリックで、シークレットがない場合、または が
client_secret
client_secret_post
認可されている場合は、このパラメータを指定する必要があります。 client_secret
-
(オプション) ユーザーを認証したアプリケーションクライアントのクライアントシークレット。アプリケーションクライアントがクライアントシークレットを持っていて、
Authorization
ヘッダーを送信しなかった場合は必須です。 scope
-
(オプション) アプリケーションクライアントに関連付けられている任意のカスタムスコープの組み合わせにすることができます。リクエストするスコープは、アプリケーションクライアントに対してアクティブ化する必要があります。そうでない場合、Amazon Cognito はそれを無視します。クライアントがスコープをリクエストしない場合、認証サーバーはアプリケーションクライアント設定で承認したすべてのカスタムスコープを割り当てます。
grant_type
がclient_credentials
である場合にのみ使用されます。 redirect_uri
-
(オプション)
authorization_code
で取得するために使用されたredirect_uri
ものと同じである必要があります/oauth2/authorize
。grant_type
が の場合、このパラメータを指定する必要がありますauthorization_code
。 refresh_token
-
(オプション) ユーザーのセッションの新しいアクセストークンと ID トークンを生成するには、
/oauth2/token
リクエスト内のrefresh_token
パラメータの値を、同じアプリケーションクライアントから以前に発行された更新トークンに設定します。 code
-
(オプション) 認証コード許可からの認証コード。認証リクエストに
grant_type
の が含まれている場合は、このパラメータを指定する必要がありますauthorization_code
。 code_verifier
-
(オプション) で認証コード許可リクエスト
code_challenge
の の計算に使用した任意の値PKCE。
正のレスポンスを持つリクエストの例
トークン用の認可コードの交換
例 – POSTリクエスト
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token& Content-Type='application/x-www-form-urlencoded'& Authorization=Basic
ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
grant_type=authorization_code& client_id=1example23456789
& code=AUTHORIZATION_CODE
& redirect_uri=com.myclientapp://myclient/redirect
例 – レスポンス
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token":"eyJra1example",
"id_token":"eyJra2example",
"refresh_token":"eyJj3example",
"token_type":"Bearer",
"expires_in":3600
}
注記
トークンエンドポイントは、grant_type
が authorization_code
の場合にのみ refresh_token
を返します。
アクセストークンのクライアント認証情報の交換: 認可ヘッダーのクライアントシークレット
例 – POSTリクエスト
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=Basic
ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
grant_type=client_credentials& client_id=1example23456789
& scope=resourceServerIdentifier1
/scope1
resourceServerIdentifier2
/scope2
例 – レスポンス
HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJra1example", "token_type":"Bearer", "expires_in":3600 }
アクセストークンのクライアント認証情報の交換: リクエスト本文のクライアントシークレット
例 – POSTリクエスト
POST /oauth2/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded X-Amz-Target: AWSCognitoIdentityProviderService.Client credentials request User-Agent: USER_AGENT Accept: / Accept-Encoding: gzip, deflate, br Content-Length: 177 Referer: http://auth.example.com/oauth2/token Host: auth.example.com Connection: keep-alive grant_type=client_credentials&client_id=
1example23456789
&scope=my_resource_server_identifier
%2Fmy_custom_scope
&client_secret=9example87654321
例 – レスポンス
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Date: Tue, 05 Dec 2023 16:11:11 GMT x-amz-cognito-request-id: 829f4fe2-a1ee-476e-b834-5cd85c03373b { "access_token": "eyJra12345EXAMPLE", "expires_in": 3600, "token_type": "Bearer" }
トークンPKCEの認証コード許可を と交換する
例 – POSTリクエスト
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token Content-Type='application/x-www-form-urlencoded'& Authorization=Basic
ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
grant_type=authorization_code& client_id=1example23456789
& code=AUTHORIZATION_CODE
& code_verifier=CODE_VERIFIER
& redirect_uri=com.myclientapp://myclient/redirect
例 – レスポンス
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token":"eyJra1example",
"id_token":"eyJra2example",
"refresh_token":"eyJj3example",
"token_type":"Bearer",
"expires_in":3600
}
注記
トークンエンドポイントは、refresh_token
が grant_type
の場合にのみ authorization_code
を返します。
トークン用の更新トークンの交換
例 – POSTリクエスト
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=Basic
ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
grant_type=refresh_token& client_id=1example23456789
& refresh_token=eyJj3example
例 – レスポンス
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token":"eyJra1example",
"id_token":"eyJra2example",
"token_type":"Bearer",
"expires_in":3600
}
注記
トークンエンドポイントは、grant_type
が authorization_code
の場合にのみ refresh_token
を返します。
否定応答の例
例 – エラーレスポンス
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
{
"error":"invalid_request|invalid_client|invalid_grant|unauthorized_client|unsupported_grant_type"
}
invalid_request
-
リクエストに必須パラメータが含まれていない、サポートされていないパラメータ値 (
unsupported_grant_type
以外) が含まれている、または正しい形式ではありません。たとえば、grant_type
がrefresh_token
であるが、refresh_token
が含まれていない、などです。 invalid_client
-
クライアントの認証に失敗しました。例えば、クライアントが承認ヘッダー
client_secret
にclient_id
と を含むが、そのclient_id
と を持つそのようなクライアントがない場合ですclient_secret
。 invalid_grant
-
更新トークンが失効しています。
認可コードが既に消費されているか、存在しません。
アプリクライアントにはリクエストされたスコープ内すべての属性への読み取りアクセス権はありません。例えば、アプリが
email
スコープをリクエストすると、アプリクライアントはemail
属性の読み取りはできますが、email_verified
は読み取れません。 unauthorized_client
-
クライアントがコード付与フローまたはトークンの更新を許可されていません。
unsupported_grant_type
-
grant_type
がauthorization_code
、refresh_token
、またはclient_credentials
以外の場合に返されます。