如何撤銷 Amazon Cognito 發行的重新整理權杖?

2 分的閱讀內容
0

我想要使用 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>」錯誤?

端點錯誤

如需有關端點錯誤的詳細資訊,請參閱撤銷端點並檢閱撤銷錯誤回應下方的資訊。

AWS 官方
AWS 官方已更新 2 年前