Utilisation du jeton d'accès - Amazon Cognito

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.

Utilisation du jeton d'accès

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 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 mécanisme d'autorisation d'API REST avec des informations provenant de votre groupe d'utilisateurs, ou utiliser Amazon Cognito comme mécanisme d'autorisation de jetons Web JSON (JWT) pour une API HTTP. Pour générer un jeton d'accès avec des étendues personnalisées, vous devez le demander via les points de terminaison publics de votre groupe d'utilisateurs.

Le jeton d'accès de l'utilisateur est une autorisation de demander plus d'informations sur les attributs de l'utilisateur auprès du Point de terminaison UserInfo. Le jeton d'accès de l'utilisateur permet également de lire et d'écrire les attributs de l'utilisateur. Le niveau d'accès aux attributs que votre jeton d'accès accorde dépend des autorisations que vous attribuez à votre client d'application et des étendues que vous accordez dans le jeton.

Le jeton d'accès est un jeton Web JSON (JWT). 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 d'un jeton web JSON. 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 une valeur minimale inférieure à une heure si vous utilisez l'interface utilisateur hébergée. Amazon Cognito HostedUI utilise des cookies valides pendant une heure. Si vous entrez un minimum de moins d'une heure, vous n'obtiendrez pas de temps d'expiration inférieur.

En tête de jeton d'accès

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).

alg

Algorithme de chiffrement utilisé par Amazon Cognito pour sécuriser le jeton d'accès. Les groupes d'utilisateurs se servent d'un algorithme de chiffrement 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).

Charge utile par défaut du jeton d'accès

Voici un exemple de la charge utile d'un jeton d'accès. Pour plus d'informations, consultez Demandes JWT. Vous pouvez ajouter des revendications de votre propre design à l'aide d'unDéclencheur Lambda avant génération de jeton.

<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", "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), ou sujet, de 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é.

cognito:groups

Tableau des noms des groupes de groupes d'utilisateurs dont l'utilisateur est membre.

iss

Fournisseur d'identité qui a émis le jeton. Le champ standard a le format suivant :

https://cognito-idp.<Region>.amazonaws.com/<your user pool ID>

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.

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 ou de l'RevokeTokenAPI. Lorsque vous révoquez un jeton, Amazon Cognito invalide tous 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 qui définissent l'accès fourni par le jeton. Un jeton provenant du Point de terminaison de jeton 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 votre groupe d'utilisateurs.

Signature du jeton d'accès

La signature du jeton d'accès est calculée en fonction de l'en-tête et de la charge utile du jeton JWT. Lorsqu'elle est utilisée à l'extérieur d'une application dans vos API web, vous devez toujours vérifier cette signature avant d'accepter le jeton. Pour plus d’informations, consultez Vérification d'un jeton web JSON.