
# 校验Token的有效性 - KeystoneValidateToken
#### 功能介绍
该接口可以用于[管理员](https://support.huaweicloud.com/usermanual-iam/iam_01_0001.html)校验本账号中IAM用户token的有效性，或IAM用户校验自己token的有效性。管理员仅能校验本账号中IAM用户token的有效性，不能校验其他账号中IAM用户token的有效性。如果被校验的token有效，则返回该token的详细信息。
该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见：[地区和终端节点](https://developer.huaweicloud.com/endpoint?IAM)。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IAM/doc?api=KeystoneValidateToken)中调试该接口。
#### 授权信息
当前API调用无需策略权限。
#### URI
GET /v3/auth/tokens
表1Query参数 
| 参数        | 是否必选 | 参数类型   | 描述                                                     |
|:---|:---|:---|:---|
| nocatalog | 否    | String | 如果设置该参数，返回的响应体中将不显示catalog参数。任何非空字符串都将解释为true，并使该字段生效。 |
   
#### 请求参数
表2请求Header参数 
| 参数              | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| Content-Type    | 是    | String | 该字段内容填为"application/json;charset=utf8"。                                                                                                                                                                                     |
| X-Auth-Token    | 是    | String | [管理员](https://support.huaweicloud.com/usermanual-iam/iam_01_0001.html)校验本账号中IAM用户的token的有效性：拥有Security Administrator权限的token。 IAM用户校验自己token的有效性：该IAM用户的token（无需特殊权限）。 |
| X-Subject-Token | 是    | String | 待校验的token。                                                                                                                                                                                                                  |
   
#### 请求示例
校验Token的有效性。
```
GET https://iam.myhuaweicloud.com/v3/auth/tokens
```
#### 响应参数
表3响应Header参数 
| 参数              | 参数类型   | 描述         |
|:---|:---|:---|
| X-Subject-Token | String | 已校验的token。 |
   
表4响应Body参数 
| 参数                                                               | 参数类型   | 描述           |
|:---|:---|:---|
| [token] | Object | 获取到的token信息。 |
   
 表5token 
| 参数                                                                               | 参数类型             | 描述                                                                                                                                                                                                                                                |
|:---|:---|:---|
| [catalog] | Array of objects | 服务目录信息。                                                                                                                                                                                                                                           |
| [domain]          | Object           | 被校验token的IAM用户所属的账号信息。如果获取token时请求体中scope参数设置为domain，则返回该字段。                                                                                                                                                                                      |
| expires_at                                                                       | String           | token过期时间。 说明： UTC时间，格式为YYYY-MM-DDTHH:mm:ss.ssssssZ，日期和时间戳格式参照[ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html)，如：2023-06-28T08:56:33.710000Z。 |
| issued_at                                                                        | String           | token下发时间。 说明： UTC时间，格式为YYYY-MM-DDTHH:mm:ss.ssssssZ，日期和时间戳格式参照[ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html)，如：2023-06-28T08:56:33.710000Z。    |
| methods                                                                          | Array of strings | 获取token的方式。                                                                                                                                                                                                                                       |
| [project]        | Object           | 被校验token的IAM用户所属账号的项目信息。如果获取token时请求体中scope参数设置为project，则返回该字段。                                                                                                                                                                                   |
| [roles]     | Array of objects | token的权限信息。                                                                                                                                                                                                                                       |
| [user]              | Object           | 获取token的IAM用户信息。                                                                                                                                                                                                                                  |
   
 表6token.catalog 
| 参数                                                                                                 | 参数类型             | 描述       |
|:---|:---|:---|
| [endpoints] | Array of objects | 终端节点。    |
| id                                                                                                 | String           | 服务ID。    |
| name                                                                                               | String           | 服务名称。    |
| type                                                                                               | String           | 该接口所属服务。 |
   
 表7token.catalog.endpoints 
| 参数        | 参数类型   | 描述                                         |
|:---|:---|:---|
| id        | String | 终端节点ID。                                    |
| interface | String | 接口类型，描述接口在该终端节点的可见性。值为"public"，表示该接口为公开接口。 |
| region    | String | 终端节点所属区域。                                  |
| region_id | String | 终端节点所属区域ID。                                |
| url       | String | 终端节点的URL。                                  |
   
 表8token.domain 
| 参数   | 参数类型   | 描述    |
|:---|:---|:---|
| name | String | 账号名称。 |
| id   | String | 账号ID。 |
   
 表9token.project 
| 参数                                                                             | 参数类型   | 描述        |
|:---|:---|:---|
| [domain] | Object | 项目所属账号信息。 |
| id                                                                             | String | 项目ID。     |
| name                                                                           | String | 项目名称。     |
   
 表10token.project.domain 
| 参数   | 参数类型   | 描述    |
|:---|:---|:---|
| id   | String | 账号ID。 |
| name | String | 账号名称。 |
   
 表11token.roles 
| 参数   | 参数类型   | 描述                   |
|:---|:---|:---|
| name | String | 权限名称。                |
| id   | String | 权限ID。默认显示为0，非真实权限ID。 |
   
 表12token.user 
| 参数                                                                          | 参数类型   | 描述                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| name                                                                        | String | IAM用户名。                                                                                                                                                                                                                                                  |
| id                                                                          | String | IAM用户ID。                                                                                                                                                                                                                                                 |
| password_expires_at                                                         | String | 密码过期时间，""表示密码不过期。 说明： UTC时间，格式为YYYY-MM-DDTHH:mm:ss.ssssssZ，日期和时间戳格式参照[ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html)，如：2023-06-28T08:56:33.710000Z。 |
| [domain] | Object | IAM用户所属的账号信息。                                                                                                                                                                                                                                            |
   
 表13token.user.domain 
| 参数   | 参数类型   | 描述                                                                                                             |
|:---|:---|:---|
| name | String | IAM用户所属账号名称。                                                                                                   |
| id   | String | IAM用户所属账号ID，获取方式请参见：[获取账号、IAM用户、项目、用户组、区域、委托的名称和ID](https://support.huaweicloud.com/api-iam/iam_17_0002.html)。 |
   
#### 响应示例
**状态码为 200 时:**
请求成功。
```
响应Header参数：
X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
```
```
响应Body参数：
{
    "token": {
        "expires_at": "2020-01-04T09:08:49.965000Z",
        "methods": [
            "password"
        ],
        "catalog": [
            {
                "endpoints": [
                    {
                        "id": "33e1cbdd86d34e89a63cf8ad16a5f49f",
                        "interface": "public",
                        "region": "*",
                        "region_id": "*",
                        "url": "https://iam.myhuaweicloud.com/v3.0"
                    }
                ],
                "id": "100a6a3477f1495286579b819d399e36",
                "name": "iam",
                "type": "iam"
            },
            {
                "endpoints": [
                    {
                        "id": "29319cf2052d4e94bcf438b55d143832",
                        "interface": "public",
                        "region": "*",
                        "region_id": "*",
                        "url": "https://bss.sample.domain.com/v1.0"
                    }
                ],
                "id": "c6db69fabbd549908adcb861c7e47ca4",
                "name": "bssv1",
                "type": "bssv1"
            }
        ],
        "domain": {
            "id": "d78cbac186b744899480f25bd022f468",
            "name": "IAMDomain"
        },
        "roles": [
            {
                "id": "0",
                "name": "te_admin"
            },
            {
                "id": "0",
                "name": "secu_admin"
            },
            {
                "id": "0",
                "name": "te_agency"
            }
        ],
        "issued_at": "2020-01-03T09:08:49.965000Z",
        "user": {
            "domain": {
                "id": "d78cbac186b744899480f25bd022f468",
                "name": "IAMDomain"
            },
            "id": "7116d09f88fa41908676fdd4b039e95b",
            "name": "IAMUser",
            "password_expires_at": ""
        }
    }
}
```
**状态码为 404 时:**
未找到相应的资源。
```
{
    "error": {
        "code": 404,
        "message": "X-Subject-Token is invalid in the request",
        "title": "Not Found"
    }
}
```
#### 返回值
| 返回值 | 描述        |
|:---|:---|
| 200 | 请求成功。     |
| 401 | 认证失败。     |
| 403 | 没有操作权限。   |
| 404 | 未找到相应的资源。 |
| 500 | 内部服务错误。   |
   
#### 错误码
无
