Como faço para revogar tokens JWT no Amazon Cognito usando o AWS CLI?

4 minuto de leitura
0

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:

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

Verificar um token web JSON

Revogar tokens de atualização

Como faço para decodificar e verificar a assinatura de um Amazon Cognito JSON Web Token?

AWS OFICIAL
AWS OFICIALAtualizada há um ano