翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
トークンエンドポイント
/oauth2/token
の OAuth 2.0 トークンエンドポイント
ユーザープール OAuth 2.0 認証サーバーは、トークンエンドポイントから次のタイプのセッションに JSON ウェブトークン (JWTsを発行します。
-
認証コード付与のリクエストを完了したユーザー。コードの引き換えに成功すると、ID、アクセス、更新の各トークンが返されます。
-
クライアント認証情報付与を完了した M achine-to-machine (M2M) セッション。クライアントシークレットによる認証が成功すると、アクセストークンが返されます。
-
以前にサインインして更新トークンを受け取ったユーザー。更新トークン認証は、新しい ID トークンとアクセストークンを返します。
注記
ホストされた UI またはフェデレーションで認証コード付与を使用してサインインするユーザーは、常にトークンエンドポイントからトークンを更新できます。API オペレーションでサインイン
InitiateAuth
し、記憶されているデバイスがユーザープールでアクティブでないときにトークンエンドポイントでトークンを更新AdminInitiateAuth
できるユーザー。記憶されているデバイスがアクティブな場合は、InitiateAuth
またはAdminInitiateAuth
API リクエストREFRESH_TOKEN_AUTH
でAuthFlow
の を使用してトークンを更新します。
ユーザープールにドメインを追加すると、トークンエンドポイントが公開されます。HTTP POST リクエストを受け入れます。アプリケーションセキュリティのために、認証コードのサインインイベントで PKCE を使用します。PKCE は、認証コードを渡すユーザーが、認証したユーザーと同じであることを確認します。PKCE の詳細については、「IETF RFC 7636
ユーザープールアプリクライアントと付与タイプ、クライアントシークレット、許可されたスコープ、クライアント ID の詳細については、「ユーザープールアプリクライアント」を参照してください。M2M 認証、クライアント認証情報の付与、およびアクセストークンスコープを使用した認証の詳細については、「」を参照してくださいOAuth 2.0 スコープとリソースサーバーでの API 認可。
アクセストークンからユーザーに関する情報を取得するには、その情報を 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
認証として認証ヘッダーに渡す必要があります。また、client_id
とclient_secret
をclient_secret_post
認証としてリクエスト本文に含めることもできます。認証ヘッダー文字列は Basic
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_post
認証client_secret
に がある場合は、このパラメータを指定する必要があります。 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
-
(オプション) PKCE を使用した認証コード付与リクエスト
code_challenge
で の計算に使用した任意の値。
肯定応答を含むリクエストの例
トークン用の認可コードの交換
例 - 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_id
とclient_secret
を含めたが、そのclient_id
とclient_secret
を持つクライアントが存在しない場合です。 invalid_grant
-
更新トークンが失効しています。
認可コードが既に消費されているか、存在しません。
アプリクライアントにはリクエストされたスコープ内すべての属性への読み取りアクセス権はありません。例えば、アプリが
email
スコープをリクエストすると、アプリクライアントはemail
属性の読み取りはできますが、email_verified
は読み取れません。 unauthorized_client
-
クライアントがコード付与フローまたはトークンの更新を許可されていません。
unsupported_grant_type
-
grant_type
がauthorization_code
、refresh_token
、またはclient_credentials
以外の場合に返されます。