¿Cómo puedo revocar los tokens JWT en Amazon Cognito mediante la AWS CLI?
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:
- Si recibe errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de la AWS CLI.
- Los clientes de aplicaciones del grupo de usuarios de Amazon Cognito pueden tener un secreto opcional para la aplicación. Para obtener más información, consulte Configurar un cliente de aplicación de grupo de usuarios.
- Sustituya us-east-1 por su región de AWS, y user-pool-id, client-id, username, email, tokens, secret y password por sus variables.
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?
Vídeos relacionados
Contenido relevante
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un mes
- OFICIAL DE AWSActualizada hace 2 años