Come faccio a revocare i token JWT in Amazon Cognito utilizzando l'interfaccia della linea di comando di AWS?
Desidero revocare i token JSON Web Tokens (JWT) emessi in un pool di utenti Amazon Cognito.
Breve descrizione
I token di aggiornamento di Amazon Cognito scadono 30 giorni dopo l'accesso di un utente a un pool di utenti. Puoi impostare la scadenza del token di aggiornamento del client dell'app tra 60 minuti e 10 anni. Per ulteriori informazioni, consulta Utilizzo del token di aggiornamento.
Puoi anche revocare i token di aggiornamento in tempo reale. Questo assicura che i token di aggiornamento non possano generare token di accesso aggiuntivi. Tutti i token di accesso precedentemente emessi dal token di aggiornamento non sono validi.
La revoca dei token di aggiornamento non ha effetto sugli altri token di aggiornamento associati a sessioni utente parallele.
Risoluzione
Per revocare un token JWT, consulta le istruzioni pertinenti in base al client dell'app.
Nota:
- Se ricevi errori durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.
- I client delle app del pool di utenti di Amazon Cognito possono avere un segreto opzionale per l'app. Per ulteriori informazioni, consulta Configuring a user pool app client.
- Sostituisci us-east-1 con la tua regione AWS e user-pool-id, client-id, nome utente, email, token, segreto e password con le tue variabili.
Client di app senza segreti
Esegui il comando dell'interfaccia a riga di comando di AWS admin-initiate-auth per avviare il flusso di autenticazione come amministratore e ottenere l'ID, il token di accesso e il token di aggiornamento:
$ 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
Riceverai un output simile al seguente:
{ "ChallengeParameters": {}, "AuthenticationResult": { "AccessToken": "eyJra....", "ExpiresIn": 3600, "TokenType": "Bearer", "RefreshToken": "ey.._9Dg", "IdToken": "ey..DU-Q" } }
Esegui il comando dell'interfaccia della linea di comando di AWS revoke-token per revocare il token di aggiornamento in modo simile al seguente:
$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJra....
Nota: Non ricevi alcun output.
Prova utilizzando lo stesso token di aggiornamento per ottenere un nuovo token di accesso e un nuovo 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
Riceverai un output che i token di aggiornamento hanno revocato in modo simile al seguente:
Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked
Client di app con un segreto
Segui le istruzioni per creare un valore SecretHash utilizzando uno script Python.
Esegui il comando AWS CLI admin-initiate-auth per avviare il flusso di autenticazione come amministratore. Questo ti dà l'ID, il token di accesso e il token di aggiornamento. Questo comando è simile al seguente:
$ 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
Riceverai un output simile al seguente esempio:
{ "ChallengeParameters": {}, "AuthenticationResult": { "AccessToken": "eyJra....", "ExpiresIn": 3600, "TokenType": "Bearer", "RefreshToken": "eyJjd....", "IdToken": "ey..YQSA" } }
Esegui il comando dell'interfaccia della linea di comando di AWS revoke-token per revocare il token di aggiornamento:
$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJjd... --client-secret 1n00....
Esegui un test utilizzando lo stesso token di aggiornamento per ottenere un nuovo token di accesso e un nuovo 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
Riceverai un messaggio che indica che i token di aggiornamento sono stati revocati:
Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked
Nuove attestazioni aggiunte
Due nuove attestazioni, origin_jti e jti, vengono aggiunte nel token di accesso e ID, aumentando le dimensioni dei token nel client dell'app.
L'attestazione jti fornisce un identificatore univoco per il JWT. Il valore identificativo deve essere assegnato in modo che lo stesso valore non possa essere assegnato a un oggetto dati diverso. Se il client dell'app utilizza più emittenti, utilizza valori diversi per evitare collisioni.
Nota: L'attestazione jti è facoltativa. Per ulteriori informazioni, consulta RFC-7519 sul sito Web della Internet Engineering Task Force.
Informazioni correlate
Revoca dei token di aggiornamento
Come faccio a decodificare e verificare la firma di un token Web JSON di Amazon Cognito?
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un anno fa