¿Cómo puedo revocar los tokens JWT en Amazon Cognito mediante la AWS CLI?

4 minutos de lectura
0

Quiero revocar los tokens web JSON (JWT) que se emiten en un grupo de usuarios de Amazon Cognito.

Breve descripción

Los tokens de actualización de Amazon Cognito caducan 30 días después de que el usuario inicie sesión en un grupo de usuarios. Puede configurar la caducidad del token de actualización del cliente de la aplicación entre 60 minutos y 10 años. Para obtener más información, consulte Uso del token de actualización.

También puede revocar los tokens de actualización en tiempo real. Esto garantiza que los tokens de actualización no puedan generar tokens de acceso adicionales. Todos los tokens de acceso emitidos anteriormente por el token de actualización no son válidos.

Al revocar los tokens de actualización, esto no afecta a otros tokens de actualización que estén asociados a sesiones de usuario paralelas.

Resolución

Para revocar un token de JWT, consulte las instrucciones pertinentes según el cliente de su aplicación.

Nota:

Cliente de aplicación sin un secreto

Ejecute el comando de la AWS CLI admin-initiate-auth para iniciar el flujo de autenticación como administrador y obtener el ID, el token de acceso y el token de actualización:

$ 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

Recibirá un resultado similar al siguiente:

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

Ejecute el comando de la AWS CLI revoke-token para revocar el token de actualización de forma similar a la siguiente:

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

Nota: No recibe ningún resultado.

Pruebe con el mismo token de actualización para obtener un token de acceso de actualización y un 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

Recibirá un resultado de que los tokens de actualización han revocado similar al siguiente:

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

Cliente de aplicación con un secreto

Siga las instrucciones para crear un valor de SecretHash mediante un script de Python.

Ejecute el comando de la AWS CLI admin-initiate-auth para iniciar el flujo de autenticación como administrador. Esto le proporciona el ID, el token de acceso y el token de actualización. Este comando tiene un aspecto similar al siguiente:

$ 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

Recibirá un resultado similar al siguiente:

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

Ejecute el comando de la AWS CLI revoke-token para revocar el token de actualización:

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

Ejecute una prueba con el mismo token de actualización para obtener un token de acceso de actualización y un 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

Recibirá un resultado de que los tokens de actualización se han revocado:

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

Nuevas reclamaciones añadidas

Se añaden dos nuevas reclamaciones, origin_jti y jti, al token de acceso e ID, lo que aumenta el tamaño de los tokens en el cliente de la aplicación.

La reclamación jti proporciona un identificador único para el JWT. El valor del identificador debe asignarse de modo que no se pueda asignar el mismo valor a un objeto de datos diferente. Si el cliente de la aplicación usa varios emisores, utilice valores diferentes para evitar colisiones.

**Nota:**La relcamación jti es opcional. Para obtener más información, consulte (RFC-7519) en el sitio web de Internet Engineering Task Force.


Información relacionada

Verificación de un token web JSON

Revocación de tokens de actualización

¿Cómo puedo decodificar y verificar la firma de un token web JSON de Amazon Cognito?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año