

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 令牌撤销端点
<a name="revocation-endpoint"></a>

在会话中持有刷新令牌的用户拥有类似于浏览器 Cookie 的东西。只要刷新令牌有效，他们就可以继续现有会话。在用户的 ID 或访问令牌到期后，您的应用程序可以使用刷新令牌来获取新的有效令牌，而不是提示他们登录。但是，您可以从外部判断应该结束用户的会话，或者用户可能选择忘记其当前会话。此时，您可以撤销该刷新令牌，这样用户就无法再维持他们的会话。

`/oauth2/revoke` 端点撤销 Amazon Cognito 最初使用您提供的刷新令牌颁发的用户访问令牌。此端点还会撤销刷新令牌本身以及来自同一刷新令牌的所有后续访问和身份令牌。终端节点撤销令牌后，您无法使用已撤销的访问令牌来访问 Amazon Cognito APIs 令牌进行身份验证。

## POST /oauth2/revoke
<a name="post-revoke"></a>

`/oauth2/revoke` 端点只支持 `HTTPS POST`。用户池客户端直接对此端点发出请求，而不通过系统浏览器。

### 标头中的请求参数
<a name="revocation-request-parameters"></a>

**`Authorization`**  
如果应用程序客户端具有客户端密钥，则客户端必须通过基本 HTTP 授权在其授权标头中传递 `client_id` 和 `client_secret`。密钥是[基本](https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side) `Base64Encode(client_id:client_secret)`。

**`Content-Type`**  
必须始终为 `'application/x-www-form-urlencoded'`。

#### 正文中的请求参数
<a name="revocation-request-parameters-body"></a>

**`token`**  
（必需）客户端要撤销的刷新令牌。请求还撤销 Amazon Cognito 使用此刷新令牌颁发的所有访问令牌。  
必需。

**`client_id`**  
（可选）您要撤销的令牌的应用程序客户端 ID。  
如果客户端是公有的且没有密钥，则为必需。

## 撤销请求示例
<a name="revoke-sample-request"></a>

此撤销请求会撤销没有客户端密钥的应用程序客户端的刷新令牌。注意请求正文中的 `client_id` 参数。

```
POST /oauth2/revoke HTTP/1.1
Host: mydomain.auth.us-east-1.amazoncognito.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
token=2YotnFZFEjr1zCsicMWpAA&
client_id=1example23456789
```

此撤销请求会撤销*有*客户端密钥的应用程序客户端的刷新令牌。请注意，`Authorization` 标头包含已编码的客户端 ID 和客户端密钥，但请求正文中没有 `client_id`。

```
POST /oauth2/revoke HTTP/1.1
Host: mydomain.auth.us-east-1.amazoncognito.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
token=2YotnFZFEjr1zCsicMWpAA
```

## 撤销错误响应
<a name="revoke-sample-response"></a>

成功的响应包含空正文。错误响应是一个带有 `error` 字段和 `error_description` 字段（在某些情况下）的 JSON 对象。

**端点错误**
+ 如果令牌在请求中不存在或者应用程序客户端禁用了该特征，则您会收到 HTTP 400 和错误 `invalid_request`。
+ 如果 Amazon Cognito 在撤销请求中发送的令牌不是刷新令牌，则您会收到 HTTP 400 和错误 `unsupported_token_type`。
+ 如果客户端凭证无效，则您会收到 HTTP 401 和错误 `invalid_client`。
+ 如果令牌已撤销或客户端提交的令牌无效，您会收到 HTTP 200 OK。