Wie widerrufe ich JWT-Token in Amazon Cognito mit AWS CLI?
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:
- Wenn beim Ausführen von Befehlen in AWS Command Line Interface (AWS CLI) Fehler auftreten, stellen Sie sicher, dass Sie die neueste Version von AWS CLI verwenden.
- App-Clients für Amazon-Cognito-Benutzerpools können über ein optionales Secret für die App verfügen. Weitere Informationen finden Sie unter Configuring a user pool app client.
- Ersetzen Sie us-east-1 mit Ihrer AWS-Region und user-pool-id, client-id, username, email, tokens, secret und password mit Ihren Variablen.
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?
Ähnliche Videos
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 9 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren