我想要使用 API 或端點撤銷 Amazon Cognito 產生的重新整理權杖。
解決方法
您可以使用 API 和端點撤銷 Amazon Cognito 產生的重新整理權杖。
**注意:**您可以即時撤銷重新整理權杖,因此這些重新整理權杖便無法產生存取權杖。
撤銷重新整理權杖的先決條件
為應用程式用戶端開啟權杖撤銷功能,以撤銷該應用程式用戶端發行的重新整理權杖。當您建立新的 Amazon Cognito 使用者集區用戶端時,依預設會開啟 EnableTokenRevocation 參數。在您撤銷現有使用者集區用戶端的權杖之前,請先在 UpdateUserPoolClient API 操作中開啟權杖撤銷功能。加入來自應用程式用戶端的當前設定,並將EnableTokenRevocation 參數設定為 True。
當您開啟權杖撤銷設定時,origin_jti 與** jti** 宣告將新增至存取權與 ID 權杖中。
- jti 宣告為 JSON Web 權杖(JWT)提供了唯一的標識碼。
- jti 宣告的用途在於防止 JWT 重新顯示。
- jti 值是區分大小寫的字串。
- 當 REFRESH_TOKEN 驗證流程用於產生新的存取權與 ID 權杖時,新的存取權和 ID 權杖具有相同的origin_jti 宣告。jti 宣告各不相同。
如需詳細資訊,請參閱開啟權杖撤銷和搭配使用者集區使用權杖。
撤銷重新整理權杖的預期結果
有關撤銷重新整理權杖時會出現什麼狀況,包括對存取權杖與 JWT 的影響的資訊,請參閱撤銷權杖與 RevokeToken。
**注意:**有關 JWT 的更多資訊,請參閱驗證 JSON Web 權杖。
使用RevokeToken API 呼叫撤銷重新整理權杖
要撤銷的重新整理權杖,應用程式用戶端 ID 和用戶端密碼是叫用 RevokeToken API 的必要參數。
**注意:**只有當用戶端 ID 有密碼時,才需要用戶端密碼。
請求語法:
{
"ClientId": "string",
"ClientSecret": "string",
"Token": "string"
}
AWS Command Line Interface (AWS CLI) 命令範例:
注意:使用您的權杖資訊更換 Token <value>。使用您的用戶端 ID 更換 client-id <value>。使用您的應用程式用戶端密碼更換 client-secret <value>。
aws cognito-idp revoke-token
--token <value>
--client-id <value>
--client-secret <value>
**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。
curl 命令範例:
注意:使用您的 AWS 區域更換<region>。使用您的權杖資訊更換**<refresh token>。使用您的用戶端 ID 更換<client-id>**。
awscurl \
-v \
-X POST \
--service cognito-idp \
--region <region> \
-H 'X-Amz-Target: AWSCognitoIdentityProviderService.RevokeToken' \
-H 'Content-Type: application/x-amz-json-1.1' \
-d '{"ClientId": "<client-id>", "Token": "<refresh-token>"}' \
https://cognito-idp.<region>.amazonaws.com
使用撤銷端點來撤銷重新整理權杖
將網域新增至使用者集區後,即可使用 /oauth2/revoke 端點。端點撤銷權杖後,您無法使用已撤銷的權杖存取 Amazon Cognito 權杖驗證的 API。如需 /oauth2/revoke 端點的相關資訊 (包括要求參數),請參閱撤銷端點。
範例 1: 使用沒有應用程式密碼的應用程式用戶端撤銷權杖:
注意:使用您的 AWS 區域更換<region>。使用您的重新整理權杖資訊更換**<refresh token>。使用您的用戶端 ID 更換<client-id>**。
POST /oauth2/revoke HTTP/1.2
Host: https://mydomain.auth.<region>.amazoncognito.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
token=<refresh token>&
client_id=<client-id>
範例 2: 使用具有應用程式密碼的應用程式用戶端撤銷權杖:
POST /oauth2/revoke HTTP/1.2
Host: https://mydomain.auth.<region>.amazoncognito.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
token=<refresh token>
若要了解如何設定授權標題,請參閱如何從我的使用者集區疑難排解「無法驗證用戶端的密碼雜湊 <client-id>」錯誤?
端點錯誤
如需有關端點錯誤的詳細資訊,請參閱撤銷端點並檢閱撤銷錯誤回應下方的資訊。