Como faço para revogar tokens JWT no Amazon Cognito usando o AWS CLI?
Quero revogar os tokens JSON Web Tokens (JWTs) emitidos em um grupo de usuários do Amazon Cognito.
Breve descrição
Os tokens de atualização do Amazon Cognito expiram 30 dias depois que um usuário faz login em um grupo de usuários. Você pode definir a expiração do token de atualização do cliente do aplicativo entre 60 minutos e 10 anos. Para obter mais informações, consulte Usar o token de atualização.
Você também pode revogar os tokens de atualização em tempo real. Isso garante que os tokens de atualização não possam gerar tokens de acesso adicionais. Todos os tokens de acesso emitidos anteriormente pelo token de atualização não são válidos.
Quando você revoga os tokens de atualização, isso não tem efeito em outros tokens de atualização associados a sessões paralelas do usuário.
Resolução
Para revogar um token JWT, consulte as instruções relevantes com base no cliente do seu aplicativo.
Observação:
- se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.
- Os clientes do aplicativo de grupo de usuários do Amazon Cognito podem ter um segredo opcional para o aplicativo. Para obter mais informações, consulte Configurar um cliente de aplicativo de pool de usuários.
- Substitua us-east-1 por sua Região da AWS e user-pool-id, client-id, username, email, tokens, secret e password por suas variáveis.
Cliente de aplicativo sem um segredo
Execute o comando da AWS CLI admin-initiate-auth para iniciar o fluxo de autenticação como administrador para obter o ID, o token de acesso e o token de atualização:
$ 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
Você recebe uma saída semelhante à seguinte:
{ "ChallengeParameters": {}, "AuthenticationResult": { "AccessToken": "eyJra....", "ExpiresIn": 3600, "TokenType": "Bearer", "RefreshToken": "ey.._9Dg", "IdToken": "ey..DU-Q" } }
Execute o comando revoke-token da AWS CLI para revogar o token de atualização semelhante ao seguinte:
$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJra....
Observação: você não recebe uma saída.
Teste usando o mesmo token de atualização para obter um novo token de acesso e 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
Você recebe uma saída que os tokens de atualização foram revogados, semelhante à seguinte:
Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked
Cliente de aplicativo com um segredo
Siga as instruções para criar um valor SecretHash usando um script Python.
Execute o comando da AWS CLI admin-initiate-auth para iniciar o fluxo de autenticação como administrador. Isso fornece o ID, o token de acesso e o token de atualização. Esse comando é semelhante ao seguinte:
$ 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
Você recebe uma saída semelhante ao exemplo a seguir:
{ "ChallengeParameters": {}, "AuthenticationResult": { "AccessToken": "eyJra....", "ExpiresIn": 3600, "TokenType": "Bearer", "RefreshToken": "eyJjd....", "IdToken": "ey..YQSA" } }
Execute o comando revoke-token da AWS CLI para revogar o token de atualização:
$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJjd... --client-secret 1n00....
Execute um teste usando o mesmo token de atualização para obter um novo token de acesso e 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
Você recebe uma saída informando que os tokens de atualização foram revogados:
Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked
Novas declarações adicionadas
Duas novas declarações, origin_jti e jti, são adicionadas ao token de acesso e ID, aumentando o tamanho dos tokens no cliente do aplicativo.
A declaração jti fornece um identificador exclusivo para o JWT. O valor do identificador deve ser atribuído para que o mesmo valor não possa ser atribuído a um objeto de dados diferente. Se o cliente do aplicativo usar vários emissores, use valores diferentes para evitar colisões.
Observação: a declaração jti é opcional. Para obter mais informações, consulte RFC-7519) no site da Internet Engineering Task Force.
Informações relacionadas
Como faço para decodificar e verificar a assinatura de um Amazon Cognito JSON Web Token?
Vídeos relacionados
Conteúdo relevante
- Resposta aceitafeita há 11 diaslg...
- feita há 13 diaslg...
- feita há 13 diaslg...
- feita há um mêslg...
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 meses
- AWS OFICIALAtualizada há 2 anos