Comment révoquer des jetons JWT dans Amazon Cognito à l'aide de l'AWS CLI ?

Lecture de 4 minute(s)
0

Je souhaite révoquer les jetons Web JSON (JWTs) émis dans un groupe d'utilisateurs Amazon Cognito.

Brève description

Les jetons d'actualisation d'Amazon Cognito expirent 30 jours après qu'un utilisateur se soit connecté à un groupe d'utilisateurs. Vous pouvez définir l'expiration du jeton d'actualisation du client d'application entre 60 minutes et 10 ans. Pour plus d'informations, veuillez consulter la section Utilisation du jeton d’actualisation.

Vous pouvez également révoquer les jetons d'actualisation en temps réel. Ainsi, les jetons d'actualisation ne peuvent pas générer de jetons d'accès supplémentaires. Aucun des jetons d'accès précédemment émis par le jeton d'actualisation n'est valide.

Lorsque vous révoquez des jetons d'actualisation, cela n'a aucun effet sur les autres jetons d'actualisation associés à des sessions utilisateur parallèles.

Solution

Afin de révoquer un jeton JWT, reportez-vous aux instructions correspondant à votre client d'application.

Remarque :

Client d'application sans secret

Exécutez la commande de l'AWS CLI admin-initiate-auth (français non garanti) pour lancer le flux d'authentification en tant qu'administrateur et obtenir l'ID, le jeton d'accès et le jeton d'actualisation :

$ aws  --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters USERNAME=user-name,PASSWORD=your-password --auth-flow ADMIN_NO_SRP_AUTH

Vous recevez une sortie similaire à ce qui suit :

{
    "ChallengeParameters": {},
    "AuthenticationResult": {
        "AccessToken": "eyJra....",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "RefreshToken": "ey.._9Dg",
        "IdToken": "ey..DU-Q"
    }
}

Exécutez la commande <t1>revoke-token</t1> de l'interface de ligne de commande AWS (AWS CLI) pour révoquer le jeton d'actualisation comme suit :

$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJra....

Remarque : vous ne recevez pas de sortie.

Effectuez un test avec le même jeton d'actualisation pour obtenir de nouveaux jeton d'accès et ID :

$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters REFRESH_TOKEN=eyJra....tw --auth-flow REFRESH_TOKEN_AUTH

La sortie indiquera que les jetons d'actualisation ont été révoqués comme suit :

Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked

Client d'application avec un secret

Suivez les instructions pour créer une valeur SecretHash à l'aide d'un script Python.

Exécutez la commande de l'AWS CLI admin-initiate-auth pour lancer le flux d'authentification en tant qu'administrateur. Cela vous donne l'ID, le jeton d'accès et le jeton d'actualisation. Cette commande ressemble à ce qui suit :

$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters USERNAME=user-name,PASSWORD=your-password,SECRET_HASH=IkVyH...= --auth-flow ADMIN_NO_SRP_AUTH

Vous recevez une sortie similaire à ce qui suit :

{
    "ChallengeParameters": {},
    "AuthenticationResult": {
        "AccessToken": "eyJra....",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "RefreshToken": "eyJjd....",
        "IdToken": "ey..YQSA"
    }
}

Exécutez la commande de l'AWS CLI revoke-token pour révoquer le jeton d'actualisation :

$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJjd... --client-secret 1n00....

Exécutez un test en utilisant le même jeton d'actualisation pour obtenir un nouveau jeton d'accès ainsi qu'un nouvel ID :

$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters REFRESH_TOKEN=eyJjdH.... --auth-flow REFRESH_TOKEN_AUTH

Vous recevez une sortie indiquant que les jetons d'actualisation sont révoqués :

Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked

Nouvelles demandes ajoutées

Deux nouvelles demandes, origin_jti et jti, sont ajoutées dans le jeton d'accès et ID, ce qui augmente la taille des jetons dans le client d'application.

La demande jti fournit un identifiant unique pour le JWT. La valeur d'identificateur doit être affectée de sorte que la même valeur ne puisse pas être attribuée à un autre objet de données. Si le client d'application utilise plusieurs émetteurs, évitez les collisions en utilisant différentes valeurs.

Remarque : la demande jti est facultative. Pour plus d'informations, veuillez consulter la section RFC-7519) (français non garanti) sur le site Web de l'Internet Engineering Task Force.


Informations connexes

Vérification d'un jeton web JSON

Révocation de jetons d'actualisation

<t1>Quelle est la marche à suivre pour décoder et vérifier la signature d'un jeton JWT (JSON Web Token) Amazon Cognito ?</t1>

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an