

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Comprendre le jeton d'accès
<a name="amazon-cognito-user-pools-using-the-access-token"></a>

Le jeton d'accès de groupe d'utilisateurs contient les demandes sur l'utilisateur authentifié, une liste des groupes de l'utilisateur et une liste des portées. L'objectif du jeton d'accès est d'autoriser des opérations d'API. Votre groupe d'utilisateurs accepte les jetons d'accès pour autoriser les opérations en libre-service des utilisateurs. Par exemple, vous pouvez utiliser le jeton d'accès pour accorder à votre utilisateur un accès lui permettant d'ajouter, de modifier ou de supprimer des attributs utilisateur.

Avec les [étendues OAuth 2.0](https://www.rfc-editor.org/rfc/rfc6749#section-3.3) dans un jeton d'accès, dérivées des étendues personnalisées que vous ajoutez à votre groupe d'utilisateurs, vous pouvez autoriser l'utilisateur à récupérer des informations à partir d'une API. Par exemple, Amazon API Gateway prend en charge l'autorisation avec les jetons d'accès Amazon Cognito. Vous pouvez renseigner un autorisateur d'API REST avec les informations de votre groupe d'utilisateurs. Pour plus de détails, consultez [Contrôler l'accès aux API REST en utilisant les groupes d'utilisateurs Amazon Cognito comme autorisateur](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html). Vous pouvez également utiliser Amazon Cognito en tant qu'autorisateur JWT pour une API HTTP. Pour plus de détails, consultez [Contrôler l'accès aux API HTTP avec les autorisateurs JWT dans API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html). Pour générer un jeton d'accès avec des étendues personnalisées, vous devez le demander via les [points de terminaison publics](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html) de votre groupe d'utilisateurs.

Avec le [plan de fonctionnalités](cognito-sign-in-feature-plans.md) Essentials ou Plus, vous pouvez également implémenter un déclencheur Lambda avant la génération de jetons qui ajoute des étendues à vos jetons d'accès lors de l'exécution. Pour plus d’informations, consultez [Déclencheur Lambda avant génération de jeton](user-pool-lambda-pre-token-generation.md).

Le jeton d'accès d'un utilisateur avec `openid` cette portée est l'autorisation de demander plus d'informations sur les attributs de votre utilisateur auprès du[Point de terminaison UserInfo](userinfo-endpoint.md). La quantité d'informations provenant du `userInfo` point de terminaison provient des étendues supplémentaires du jeton d'accès : par exemple, `profile` pour toutes les données utilisateur, `email` pour leur adresse e-mail. 

Le jeton d'accès d'un utilisateur avec cette `aws.cognito.signin.user.admin` portée est l'autorisation de lire et d'écrire les attributs utilisateur, de répertorier les facteurs d'authentification, de configurer les préférences d'authentification multifactorielle (MFA) et de gérer les appareils mémorisés. Le niveau d'accès aux attributs que votre jeton d'accès accorde à cette étendue correspond aux read/write autorisations d'attributs que vous attribuez à votre client d'application.

Le jeton d'accès est un [jeton Web JSON (JWT).](https://www.rfc-editor.org/rfc/rfc7519) L'en-tête du jeton d'accès a la même structure que celui du jeton d'identification. Amazon Cognito signe les jetons d'accès avec une clé différente de celle utilisée pour signer les jetons d'identification. La valeur d'un champ standard d'identification de clé d'accès (`kid`) ne correspond pas à la valeur du champ standard `kid` d'un jeton d'identification provenant de la même session utilisateur. Dans le code de votre application, vérifiez indépendamment les jetons d'identification et les jetons d'accès. Ne faites pas confiance aux champs standard d'un jeton d'accès tant que vous n'avez pas vérifié la signature. Pour plus d’informations, consultez [Vérification des jetons Web JSON](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md). Vous pouvez définir l'expiration d'un jeton d'accès sur toute valeur comprise entre 5 minutes et 1 jour. Vous pouvez définir cette valeur par client d'application.

**Important**  
Pour les jetons d'accès et d'identification, ne spécifiez pas un minimum de moins d'une heure si vous utilisez une connexion gérée. La connexion gérée définit les cookies du navigateur qui sont valides pendant une heure. Si vous configurez un jeton d'accès d'une durée inférieure à une heure, cela n'a aucun effet sur la validité du cookie de connexion géré et sur la capacité des utilisateurs à s'authentifier à nouveau sans informations d'identification supplémentaires pendant une heure après la connexion initiale.

Le jeton d'accès transmet les demandes de manière additive, de la même manière que le jeton d'identification, et les mêmes règles d'analyse s'appliquent. Pour plus d'informations sur l'analyse sécurisée des jetons, consultez[Analyser les jetons du pool d'utilisateurs en toute sécurité](user-pool-parse-tokens-safely.md).

## En tête de jeton d'accès
<a name="user-pool-access-token-header"></a>

L'en-tête contient deux éléments d'information : l'ID de clé (`kid`) et l'algorithme (`alg`).

```
{
"kid" : "1234example="
"alg" : "RS256",
}
```

**`kid`**  
ID de la clé . Sa valeur indique quelle clé a été utilisée pour sécuriser la signature web JSON (JWS) du jeton. Vous pouvez consulter les identifiants de clé de signature de votre groupe d'utilisateurs sur le point de terminaison `jwks_uri`.  
Pour plus d'informations sur le paramètre `kid`, consultez [Paramètre d'en-tête Key identifier (kid)](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.5).

**`alg`**  
Algorithme de chiffrement utilisé par Amazon Cognito pour sécuriser le jeton d'accès. Les groupes d'utilisateurs utilisent un algorithme cryptographique RS256, qui est une signature RSA avec. SHA-256  
Pour plus d'informations sur le paramètre `alg`, consultez [Paramètre d'en-tête Algorithme (alg)](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.4).

## Charge utile par défaut du jeton d'accès
<a name="user-pool-access-token-payload"></a>

Voici un exemple de la charge utile d'un jeton d'accès. Pour plus d'informations, consultez [Demandes JWT](https://tools.ietf.org/html/rfc7519#section-4). Vous pouvez ajouter des revendications de votre propre design à l'aide d'un[Déclencheur Lambda avant génération de jeton](user-pool-lambda-pre-token-generation.md).

```
{{<header>}}.
{
   "sub":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "device_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "cognito:groups":[
      "testgroup"
   ],
   "iss":"https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example",
   "version":2,
   "client_id":"xxxxxxxxxxxxexample",
   "aud": "https://api.example.com",
   "origin_jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "event_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "token_use":"access",
   "scope":"phone openid profile resourceserver.1/appclient2 email",
   "auth_time":1676313851,
   "exp":1676317451,
   "iat":1676313851,
   "jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "username":"my-test-user"
}
.{{<token signature>}}
```

**`sub`**  
Identifiant unique ([UUID](cognito-terms.md#terms-uuid)), ou sujet, pour l'utilisateur authentifié. Le nom d'utilisateur n'est peut-être pas unique dans votre groupe d'utilisateurs. Le champ standard `sub` est le meilleur moyen d'identifier un utilisateur donné.  
Amazon Cognito génère des données `sub` dans un Cognito-specific format Amazon qui n'est pas conforme à un format UUID spécifique, y compris l'UUID RFC. Vous ne devez pas valider strictement le format de`sub`.

**`cognito:groups`**  
Tableau des noms des groupes de groupes d'utilisateurs dont l'utilisateur est membre.

**`iss`**  
Émetteur du jeton. Cette réclamation identifie le groupe d'utilisateurs qui a généré le jeton. Votre application doit vérifier que cette valeur correspond à l'URL de l'émetteur attendu par votre groupe d'utilisateurs. Le champ standard a le format suivant :  
`https://cognito-idp.{{us-east-1}}.amazonaws.com/{{us-east-1_EXAMPLE}}`  
Votre groupe d'utilisateurs peut utiliser un émetteur original ou mis à jour. Les émetteurs mis à jour hébergent le même contenu JWKS dans plusieurs régions, ce qui améliore la résilience et l’efficacité. Pour plus d’informations, consultez [Groupes d'utilisateurs Amazon Cognito en tant qu'émetteur OIDC](federation-endpoints.md#user-pool-oidc-issuer).

**`client_id`**  
Client d'application du groupe d'utilisateurs qui a authentifié l'utilisateur. Amazon Cognito affiche la même valeur dans le champ standard `aud` du jeton d'identification.

**aud**  
URL de l'API que le jeton d'accès est censé autoriser. Présent uniquement si votre application a demandé une [liaison de ressource](cognito-user-pools-define-resource-servers.md#cognito-user-pools-resource-binding) à votre serveur d'autorisation.

**`origin_jti`**  
Un identifiant de révocation de jeton associé au jeton d'actualisation de votre utilisateur. Amazon Cognito fait référence à la `origin_jti` réclamation lorsqu'il vérifie si vous avez révoqué le jeton de votre utilisateur lors de l'opération [Point de terminaison de révocation](revocation-endpoint.md) ou de l'[RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)API. Lorsque vous révoquez un jeton, Amazon Cognito ne valide plus les jetons d'accès et d'identification ayant la même valeur. `origin_jti`

**`token_use`**  
Objectif prévu du jeton. Dans un jeton d'accès, sa valeur est `access`.

**`scope`**  
Liste des étendues OAuth 2.0 fournies à l'utilisateur connecté. Les étendues définissent l'accès que le jeton fournit aux API externes, aux opérations en libre-service des utilisateurs et aux données utilisateur sur le `userInfo` point de terminaison. Un jeton provenant du [Point de terminaison de jeton](token-endpoint.md) peut contenir toutes les étendues prises en charge par votre client d'application. Un jeton provenant de la connexion à l'API Amazon Cognito contient uniquement l'étendue `aws.cognito.signin.user.admin`.

**`auth_time`**  
Date et heure d'authentification, au format horaire Unix, auxquelles l'utilisateur a terminé l'authentification.

**`exp`**  
Date et heure d'expiration, au format horaire Unix, auxquelles le jeton de l'utilisateur expire.

**`iat`**  
Date et heure, au format horaire Unix, auxquelles Amazon Cognito a émis le jeton de l'utilisateur.

**`jti`**  
Identifiant unique du jeton JWT.

**`username`**  
Nom d'utilisateur de l'utilisateur dans le groupe d'utilisateurs.

**Ressources supplémentaires**
+ [Comment personnaliser les jetons d'accès dans les groupes d'utilisateurs Amazon Cognito](https://aws.amazon.com/blogs/security/how-to-customize-access-tokens-in-amazon-cognito-user-pools/)

## Machine-to-machine charge utile du jeton d'accès
<a name="user-pool-access-token-payload-m2m"></a>

Étant donné qu'un jeton d'accès machine à machine (M2M) autorise une application plutôt qu'un utilisateur, sa charge utile est différente du jeton d'accès utilisateur décrit précédemment. Dans le cas d'une autorisation M2M, la `sub` réclamation contient l'ID du client de l'application qui a demandé le jeton, et non un identifiant d'utilisateur, `sub` et les `client_id` revendications et ont la même valeur. Le jeton contient les étendues personnalisées qui autorisent les demandes adressées à votre serveur de ressources, ainsi que des revendications standard telles que`iss`, `token_use` (avec une valeur de`access`), `exp``iat`, et`jti`.

Étant donné que l'autorisation M2M n'implique aucun utilisateur et n'émet aucun jeton d'actualisation, un jeton d'accès M2M omet plusieurs affirmations contenues dans un jeton d'accès utilisateur. Votre serveur de ressources ne peut pas s'attendre à ces affirmations :
+ Les `cognito:groups` revendications `username` et, qui identifient un utilisateur authentifié et son appartenance au groupe.
+ La `device_key` réclamation, qui identifie un appareil utilisateur mémorisé.
+ La `origin_jti` réclamation, qui lie un jeton à un jeton d'actualisation révocable que l'autorisation M2M n'émet pas.

## Signature du jeton d'accès
<a name="user-pool-access-token-signature"></a>

La signature du jeton d'accès, signée avec la clé annoncée sur le point de `.well-known/jwks.json` terminaison, valide l'intégrité de l'en-tête et de la charge utile du jeton. Lorsque vous utilisez des jetons d'accès pour autoriser l'accès à des API externes, configurez toujours votre autorisateur d'API pour vérifier cette signature par rapport à la clé qui l'a signée. Pour plus d’informations, consultez [Vérification des jetons Web JSON](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md).