Point de terminaison TOKEN - Amazon Cognito

Point de terminaison TOKEN

Le point de terminaison /oauth2/token récupère les jetons de l'utilisateur.

POST /oauth2/jeton

Le point de terminaison /oauth2/token prend uniquement en charge HTTPS POST. Votre application envoie des requêtes à ce point de terminaison directement, sans passer par le navigateur de l'utilisateur.

Pour obtenir plus d'informations sur le point de terminaison de jeton à partir de la norme OpenID Connect, consultez Point de terminaison de jeton.

Paramètres de demande dans l'en-tête

Authorization

Si un secret a été attribué au client, ce dernier doit transmettre les paramètres client_id et client_secret dans l'en-tête d'autorisation via une autorisation HTTP de base. La chaîne d'en-tête d'autorisation est Basic Base64Encode(client_id:client_secret). L'exemple suivant est un en-tête d'autorisation pour le client d'application djc98u3jiedmi283eu928 avec secret client abcdef01234567890, en utilisant la version encodée en Base64 de la chaîne djc98u3jiedmi283eu928:abcdef01234567890.

Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
Content-Type

Doit toujours être 'application/x-www-form-urlencoded'.

Paramètres de la demande dans le corps

grant_type

Type d'octroi.

Doit être authorization_code, refresh_token ou client_credentials. Vous pouvez demander un jeton d'accès pour une étendue personnalisée à partir du point de terminaison TOKEN lorsque, dans le client de l'appli, l'étendue demandée est activée, que vous avez configuré un secret client et que vous avez autorisé ce que client_credentials octroie.

Obligatoire.

client_id

ID client.

Il doit s'agir d'un client enregistré préalablement dans le groupe d'utilisateurs. Le client doit être activé pour la fédération Amazon Cognito.

Obligatoire si le client est public et n'a pas de clé de secrète.

portée

Peut être une combinaison d'étendues personnalisées quelconques, associées à un client d'application. Toute étendue que vous demandez doit être activée pour le client d'application, ou Amazon Cognito l'ignorera. Si le client ne demande pas de périmètre, le serveur d'authentification utilise tous les périmètres personnalisés et associés au client.

Facultatif. Utilisé uniquement si le grant_type est client_credentials.

redirect_uri

Doit être le même URI redirect_uri que celui utilisé pour obtenir le code authorization_code dans /oauth2/authorize.

Obligatoire uniquement si grant_type est authorization_code.

refresh_token

Jeton d'actualisation.

Note

Le point de terminaison de jeton renvoie refresh_token uniquement lorsque la valeur de grant_type est authorization_code.

code

Obligatoire si grant_type a pour valeur authorization_code.

code_verifier

Clé de validation.

Obligatoire si grant_type est authorization_code et si le code d'autorisation a été demandé avec PKCE.

Exemples de demandes avec des réponses positives

Échange d'un code d'autorisation contre des jetons

Exemple de demande

POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token& Content-Type='application/x-www-form-urlencoded'& Authorization=Basic aSdxd892iujendek328uedj grant_type=authorization_code& client_id=djc98u3jiedmi283eu928& code=AUTHORIZATION_CODE& redirect_uri=com.myclientapp://myclient/redirect

Exemple de réponse

HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJz9sdfsdfsdfsd", "id_token":"dmcxd329ujdmkemkd349r", "token_type":"Bearer", "expires_in":3600 }
Note

Le point de terminaison de jeton renvoie refresh_token uniquement lorsque la valeur de grant_type est authorization_code.

Échange d'informations d'identification de client contre un jeton d'accès

Exemple de demande

POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=Basic aSdxd892iujendek328uedj grant_type=client_credentials& scope={resourceServerIdentifier1}/{scope1} {resourceServerIdentifier2}/{scope2}

Exemple de réponse

HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJz9sdfsdfsdfsd", "token_type":"Bearer", "expires_in":3600 }

Échange d'un octroi de code d'autorisation avec PKCE contre des jetons

Exemple de demande

POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token Content-Type='application/x-www-form-urlencoded'& Authorization=Basic aSdxd892iujendek328uedj grant_type=authorization_code& client_id=djc98u3jiedmi283eu928& code=AUTHORIZATION_CODE& code_verifier=CODE_VERIFIER& redirect_uri=com.myclientapp://myclient/redirect

Exemple de réponse

HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJz9sdfsdfsdfsd", "refresh_token":"dn43ud8uj32nk2je", "id_token":"dmcxd329ujdmkemkd349r", "token_type":"Bearer", "expires_in":3600 }
Note

Le point de terminaison de jeton renvoie refresh_token uniquement lorsque la valeur de grant_type est authorization_code.

Échange d'un jeton d'actualisation contre des jetons

Exemple de demande

POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=Basic aSdxd892iujendek328uedj grant_type=refresh_token& client_id=djc98u3jiedmi283eu928& refresh_token=REFRESH_TOKEN

Exemple de réponse

HTTP/1.1 200 OK Content-Type: application/json { "id_token":"eyJz9sdfsdfsdfsd", "access_token":"dmcxd329ujdmkemkd349r", "token_type":"Bearer", "expires_in":3600 }
Note

Le point de terminaison de jeton renvoie refresh_token uniquement lorsque la valeur de grant_type est authorization_code.

Exemples de réponses négatives

Exemple de réponse d'erreur

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

Un paramètre obligatoire n'est pas inclus dans la demande, la demande comprend une valeur de paramètre non pris en charge (autre que unsupported_grant_type) ou la demande présente un autre défaut. Par exemple, grant_type est refresh_token mais refresh_token n'est pas inclus.

invalid_client

Échec de l'authentification du client. Par exemple, lorsque le client comprend client_id et client_secret dans l'en-tête d'autorisation, mais il n'existe pas de client avec ce client_id et ce client_secret.

invalid_grant

Le jeton d'actualisation a été révoqué.

Le code d'autorisation a déjà été utilisé ou n'existe pas.

unauthorized_client

Le client n'a pas d'autorisation pour le flux d'octroi de code ou pour les jetons d'actualisation.

unsupported_grant_type

Renvoyé si grant_type est différent de authorization_code, refresh_token ou client_credentials.