Come faccio a revocare i token JWT in Amazon Cognito utilizzando l'interfaccia della linea di comando di AWS?

4 minuti di lettura
0

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:

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

Verifica di un token web JSON

Revoca dei token di aggiornamento

Come faccio a decodificare e verificare la firma di un token Web JSON di Amazon Cognito?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa