我想撤銷在 Amazon Cognito 使用者集區中發行的 JSON Web 權杖 (JWT)。
簡短描述
Amazon Cognito 重新整理權杖在使用者登入使用者集區後 30 天到期。您可以將應用程式用戶端重新整理權杖過期時間設定為 60 分鐘到 10 年。如需詳細資訊,請參閱使用重新整理權杖。
您還可以即時撤銷重新整理權杖。這可確保重新整理權杖無法產生其他存取權杖。重新整理權杖先前發行的所有存取權杖都無效。
當您撤銷重新整理權杖時,將不會影響與平行使用者工作階段相關聯的其他重新整理權杖。
解決方法
若要撤銷 JWT 權杖,請參閱基於您的應用程式用戶端的相關說明。
注意:
- 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用的是最新的 AWS CLI 版本。
- Amazon Cognito 使用者集區應用程式用戶端可以具有應用程式的選用機密。如需詳細資訊,請參閱設定使用者集區應用程式用戶端。
- 將 us-east-1 替換為您的 AWS 區域,將 user-pool-id、client-id、username、email、tokens、secret 和 password 替換為您的變數。
不含機密的應用程式用戶端
執行 AWS CLI 命令 admin-initiate-auth,以管理員身分啟動身分驗證流程取得 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 USERNAME=user-name,PASSWORD=your-password --auth-flow ADMIN_NO_SRP_AUTH
您會收到類似於以下內容的輸出:
{
"ChallengeParameters": {},
"AuthenticationResult": {
"AccessToken": "eyJra....",
"ExpiresIn": 3600,
"TokenType": "Bearer",
"RefreshToken": "ey.._9Dg",
"IdToken": "ey..DU-Q"
}
}
執行 AWS CLI 命令 revoke-token,以撤銷類似於以下內容的重新整理權杖:
$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJra....
**注意:**您沒有收到輸出。
使用相同的重新整理權杖進行測試,以取得新的存取權杖和 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
您會收到類似於以下內容的重新整理權杖撤銷的輸出:
Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked
包含機密的應用程式用戶端
按照說明使用 Python 指令碼建立 SecretHash 值。
執行 AWS CLI 命令 admin-initiate-auth,以管理員身分啟動身分驗證流程。這會為您提供 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 USERNAME=user-name,PASSWORD=your-password,SECRET_HASH=IkVyH...= --auth-flow ADMIN_NO_SRP_AUTH
您會收到類似於以下內容的輸出:
{
"ChallengeParameters": {},
"AuthenticationResult": {
"AccessToken": "eyJra....",
"ExpiresIn": 3600,
"TokenType": "Bearer",
"RefreshToken": "eyJjd....",
"IdToken": "ey..YQSA"
}
}
執行 AWS CLI 命令 revoke-token 以撤銷重新整理權杖:
$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJjd... --client-secret 1n00....
使用相同的重新整理權杖執行測試,以取得新的存取權杖和 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
您會收到重新整理權杖撤銷的輸出:
Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked
新增的宣告
存取和 ID 權杖中新增兩個新的宣告 origin_jti 和 jti,這增加了應用程式用戶端中權杖的大小。
jti 宣告為 JWT 提供了唯一的識別碼。必須指派識別碼值,才不會將相同的值指派給不同的資料物件。如果應用程式用戶端使用多個發行者,則使用不同的值以防止衝突。
**注意:**jti 宣告是可選的。如需詳細資訊,請參閱 Internet Engineering Task Force 網站上的 RFC-7519)。
相關資訊
驗證 JSON Web 權杖
撤銷重新整理權杖
如何解碼和驗證 Amazon Cognito JSON Web 權杖的簽章?