Wie widerrufe ich JWT-Token in Amazon Cognito mit AWS CLI?

Lesedauer: 4 Minute
0

Ich möchte JSON Web Tokens (JWTs) sperren, die in einem Amazon-Cognito-Benutzerpool ausgegeben wurden.

Kurzbeschreibung

Aktualisierungs-Token in Amazon Cognito laufen 30 Tage nach der Anmeldung eines Benutzers bei einem Benutzerpool ab. Sie können für das Ablaufen des Aktualisierungs-Tokens des App-Clients eine Spanne zwischen 60 Minuten und 10 Jahren festlegen. Weitere Informationen finden Sie unter Verwendung des Aktualisierungs-Tokens.

Sie können Aktualisierungs-Token auch in Echtzeit widerrufen. Dadurch wird sichergestellt, dass Aktualisierungs-Token keine zusätzlichen Zugriffstoken generieren können. Alle zuvor vom Aktualisierungs-Token ausgegebenen Zugriffstoken sind ungültig.

Wenn Sie Aktualisierungs-Token widerrufen, hat dies keine Auswirkung auf andere Aktualisierungs-Token, die parallelen Benutzersitzungen zugeordnet sind.

Behebung

Um ein JWT-Token zu widerrufen, lesen Sie die entsprechenden Anweisungen für Ihren App-Client.

Hinweis:

App-Client ohne Secret

Führen Sie den AWS-CLI-Befehl admin-initiate-auth aus, um den Authentifizierungsablauf als Administrator zu initiieren und die ID, das Zugriffstoken und das Aktualisierungs-Token abzurufen:

$ 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

Sie erhalten eine Ausgabe wie die folgende:

{
    "ChallengeParameters": {},
    "AuthenticationResult": {
        "AccessToken": "eyJra....",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "RefreshToken": "ey.._9Dg",
        "IdToken": "ey..DU-Q"
    }
}

Führen Sie den AWS-CLI-Befehl Widerruf-Token aus, um das Aktualisierungs-Token zu widerrufen, ähnlich wie hier:

$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJra....

Hinweis: Sie erhalten keine Ausgabe.

Versuchen Sie, dasselbe Aktualisierungs-Token zu verwenden, um ein neues Zugriffstoken und eine neue ID zu erhalten:

$ 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

Sie erhalten eine Meldung, dass die Aktualisierungs-Token widerrufen wurden, ähnlich der folgenden:

Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked

App-Client mit Secret

Folgen Sie den Anweisungen, um mithilfe eines Python-Skripts einen SecretHash-Wert zu erstellen.

Führen Sie den AWS-CLI-Befehl admin-initiate-auth aus, um den Authentifizierungsablauf als Administrator zu initiieren. Dadurch erhalten Sie die ID, das Zugriffstoken und das Aktualisierungs-Token. Dieser Befehl sieht etwa wie folgt aus:

$ 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

Sie erhalten eine Ausgabe wie die folgende:

{
    "ChallengeParameters": {},
    "AuthenticationResult": {
        "AccessToken": "eyJra....",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "RefreshToken": "eyJjd....",
        "IdToken": "ey..YQSA"
    }
}

Führen Sie den AWS-CLI-Befehl Widerruf-Token aus, um das Aktualisierungs-Token zu widerrufen:

$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJjd... --client-secret 1n00....

Führen Sie einen Test mit demselben Aktualisierungs-Token durch, um ein neues Zugriffstoken und eine neue ID zu erhalten:

$ 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

Sie erhalten die Meldung, dass die Aktualisierungs-Token widerrufen wurden:

Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked

Neu hinzugefügte Ansprüche

Zwei neue Ansprüche, origin_jti und jti, werden dem Zugriffs- und ID-Token hinzugefügt, wodurch die Größe der Token im App-Client gesteigert wird.

Der jti-Anspruch bietet eine eindeutige Kennung für das JWT. Der Wert der Kennung muss zugewiesen werden, damit derselbe Wert nicht einem anderen Datenobjekt zugewiesen werden kann. Wenn der App-Client mehrere Aussteller verwendet, nutzen Sie unterschiedliche Werte, um Kollisionen zu vermeiden.

**Hinweis:**Der jti-Anspruch ist optional. Weitere Informationen finden Sie unter RFC-7519 auf der Website der Internet Engineering Task Force.


Verwandte Themen

Verifizieren eines JSON-Web-Tokens

Widerrufen von Aktualisierungstokens

Wie kann ich die Signatur eines Amazon Cognito-JSON-Web-Tokens dekodieren und überprüfen?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr