
# 获取联邦认证scoped token
#### 功能介绍
该接口可以用于通过联邦认证方式获取scoped token。
为了更好的安全体验，不建议您获取scoped token，强烈推荐您使用unscoped token通过接口[获取联邦用户的临时访问密钥和securitytoken](https://support.huaweicloud.com/api-iam/iam_04_0003.html)获取临时访问密钥和securitytoken，后续使用获取到的临时访问密钥和securitytoken作为凭证访问云服务。
该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见：[地区和终端节点](https://developer.huaweicloud.com/endpoint?IAM)。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IAM/doc?api=KeystoneCreateScopedToken)中调试该接口。
#### 授权信息
当前API调用无需策略权限。
#### URI
POST /v3/auth/tokens
#### 请求参数
表1请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                      |
|:---|:---|:---|:---|
| Content-Type | 否    | String | 该字段内容填为"application/json;charset=utf8"。 |
   
表2请求Body参数 
| 参数                                                              | 是否必选 | 参数类型   | 描述    |
|:---|:---|:---|:---|
| [auth] | 是    | Object | 认证信息。 |
   
 表3auth 
| 参数                                                                          | 是否必选 | 参数类型   | 描述                                  |
|:---|:---|:---|:---|
| [identity] | 是    | Object | 认证参数。                               |
| [scope]       | 是    | Object | token的使用范围，取值为project或domain，二选一即可。 |
   
 表4auth.identity 
| 参数                                                                            | 是否必选 | 参数类型             | 描述                   |
|:---|:---|:---|:---|
| methods                                                                       | 是    | Array of strings | 认证方法，该字段内容为"token"。  |
| [token] | 是    | Object           | 联邦unscoped token的信息。 |
   
 表5auth.identity.token 
| 参数 | 是否必选 | 参数类型   | 描述                   |
|:---|:---|:---|:---|
| id | 是    | String | 联邦unscoped token的ID。 |
   
 表6auth.scope 
| 参数                                                                             | 是否必选 | 参数类型   | 描述                                                              |
|:---|:---|:---|:---|
| [domain]   | 否    | Object | 取值为domain时，表示获取的token可以跨区域使用，domain支持id和name，二选一即可。             |
| [project] | 否    | Object | 取值为project时，表示获取的token仅能访问指定project下的资源，project支持id和name，二选一即可。 |
   
 表7auth.scope.domain 
| 参数   | 是否必选 | 参数类型   | 描述                 |
|:---|:---|:---|:---|
| id   | 否    | String | 账号ID，id与name二选一即可。 |
| name | 否    | String | 账号名，id与name二选一即可。  |
   
 表8auth.scope.project 
| 参数                                          | 是否必选 | 参数类型   | 描述                 |
|:---|:---|:---|:---|
| [domain] | 否    | Object | 项目所属账号，使用name时必填。  |
| id                                          | 否    | String | 项目ID，id与name二选一即可。 |
| name                                        | 否    | String | 项目名，id与name二选一即可。  |
   
 表9auth.scope.project.domain 
| 参数   | 是否必选 | 参数类型   | 描述                 |
|:---|:---|:---|:---|
| id   | 否    | String | 账号ID，id与name二选一即可。 |
| name | 否    | String | 账号名，id与name二选一即可。  |
   
#### 响应参数
表10响应Header参数 
| 参数              | 参数类型   | 描述                |
|:---|:---|:---|
| X-Subject-Token | String | 签名后的scoped token。 |
   
表11响应Body参数 
| 参数                                                                 | 参数类型   | 描述                   |
|:---|:---|:---|
| [token] | Object | 联邦认证的scoped token信息。 |
   
 表12token 
| 参数                                                                                 | 参数类型             | 描述                                                                                                                                                                                                                                                 |
|:---|:---|:---|
| methods                                                                            | Array of strings | 获取token的方式。                                                                                                                                                                                                                                        |
| 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。  |
| [catalog] | Array of objects | 服务目录信息。                                                                                                                                                                                                                                            |
| [domain]          | Object           | 获取token的用户所属的账号信息。如果获取token时请求体中scope参数设置为domain，则返回该字段。                                                                                                                                                                                           |
| [project]        | Object           | 获取token的用户所属账号的项目信息。如果获取token时请求体中scope参数设置为project，则返回该字段。                                                                                                                                                                                        |
| [roles]     | Array of objects | token的权限信息。                                                                                                                                                                                                                                        |
| [user]              | Object           | 获取token的用户信息。                                                                                                                                                                                                                                      |
| 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。 |
   
 表13token.catalog 
| 参数                                                                                                   | 参数类型             | 描述       |
|:---|:---|:---|
| type                                                                                                 | String           | 该接口所属服务。 |
| id                                                                                                   | String           | 服务ID。    |
| name                                                                                                 | String           | 服务名称。    |
| [endpoints] | Array of objects | 终端节点。    |
   
 表14token.catalog.endpoints 
| 参数        | 参数类型   | 描述                                         |
|:---|:---|:---|
| url       | String | 终端节点的URL。                                  |
| region    | String | 终端节点所属区域。                                  |
| region_id | String | 终端节点所属区域ID。                                |
| interface | String | 接口类型，描述接口在该终端节点的可见性。值为"public"，表示该接口为公开接口。 |
| id        | String | 终端节点ID。                                    |
   
 表15token.domain 
| 参数   | 参数类型   | 描述    |
|:---|:---|:---|
| name | String | 账号名。  |
| id   | String | 账号ID。 |
   
 表16token.project 
| 参数                                                                               | 参数类型   | 描述        |
|:---|:---|:---|
| name                                                                             | String | 项目名。      |
| id                                                                               | String | 项目ID。     |
| [domain] | Object | 项目所属账号信息。 |
   
 表17token.project.domain 
| 参数   | 参数类型   | 描述    |
|:---|:---|:---|
| name | String | 账号名。  |
| id   | String | 账号ID。 |
   
 表18token.roles 
| 参数   | 参数类型   | 描述                   |
|:---|:---|:---|
| name | String | 权限名称。                |
| id   | String | 权限ID。默认显示为0，非真实权限ID。 |
   
 表19token.user 
| 参数                                                                                         | 参数类型   | 描述                                                                                                                                                                                                                                                         |
|:---|:---|:---|
| [domain]              | Object | 用户所属账号信息。                                                                                                                                                                                                                                                  |
| [OS-FEDERATION] | Object | 联邦身份认证信息。                                                                                                                                                                                                                                                  |
| id                                                                                         | String | 用户ID。                                                                                                                                                                                                                                                      |
| name                                                                                       | String | 用户名。                                                                                                                                                                                                                                                       |
| 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。 |
   
 表20token.user.domain 
| 参数   | 参数类型   | 描述        |
|:---|:---|:---|
| name | String | 用户所属账号名称。 |
| id   | String | 用户所属账号ID。 |
   
 表21token.user.OS-FEDERATION 
| 参数                                                                                                             | 参数类型             | 描述       |
|:---|:---|:---|
| [groups]               | Array of objects | 用户组信息列表。 |
| [identity_provider] | Object           | 身份提供商信息。 |
| [protocol]                  | Object           | 协议信息。    |
   
 表22token.user.OS-FEDERATION.groups 
| 参数   | 参数类型   | 描述     |
|:---|:---|:---|
| id   | String | 用户组ID。 |
| name | String | 用户组名称。 |
   
 表23token.user.OS-FEDERATION.identity_provider 
| 参数 | 参数类型   | 描述       |
|:---|:---|:---|
| id | String | 身份提供商ID。 |
   
 表24token.user.OS-FEDERATION.protocol 
| 参数 | 参数类型   | 描述    |
|:---|:---|:---|
| id | String | 协议ID。 |
   
#### 请求示例
获取联邦认证scoped token。
```
POST https://iam.myhuaweicloud.com/v3/auth/tokens
```
```
{
    "auth": {
        "identity": {
            "methods": [
                "token"
            ],
            "token": {
                "id": "MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB..."
            }
        },
        "scope": {
            "domain": {
                "id": "063bb260a480cecc0f36c0086bb6c..."
            }
        }
    }
}
```
#### 响应示例
**状态码为 201 时:**
创建成功。
```
响应Header参数：
X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
```
```
响应Body参数：
{
    "token": {
        "expires_at": "2020-02-13T14:21:34.042000Z",
        "methods": [
            "token"
        ],
        "catalog": [
            {
                "endpoints": [
                    {
                        "id": "d2983f677ce14f1e81cbb6a9345a107a",
                        "interface": "public",
                        "region": "*",
                        "region_id": "*",
                        "url": "https://iam.cn-north-1.myhuaweicloud.com/v3"
                    }
                ],
                "id": "fd631b3426cb40f0919091d5861d8fea",
                "name": "keystone",
                "type": "identity"
            }
        ],
        "domain": {
            "id": "06aa2260a480cecc0f36c0086bb6cfe0",
            "name": "IAMDomain"
        },
        "roles": [
            {
                "id": "0",
                "name": "te_admin"
            },
            {
                "id": "0",
                "name": "secu_admin"
            }
        ],
        "issued_at": "2020-02-12T14:21:34.042000Z",
        "user": {
            "OS-FEDERATION": {
                "groups": [
                    {
                        "id": "06aa2260bb00cecc3f3ac0084a74038f",
                        "name": "admin"
                    }
                ],
                "identity_provider": {
                    "id": "ACME"
                },
                "protocol": {
                    "id": "saml"
                }
            },
            "domain": {
                "id": "06aa2260a480cecc0f36c0086bb6cfe0",
                "name": "IAMDomain"
            },
            "id": "LdQTDSC7zmJVIic3yaCbLBXDxPAdDxLg",
            "name": "FederationUser",
            "password_expires_at": ""
        }
    }
}
```
#### 返回值
| 返回值 | 描述        |
|:---|:---|
| 201 | 创建成功。     |
| 400 | 参数无效。     |
| 401 | 认证失败。     |
| 403 | 没有操作权限。   |
| 404 | 未找到相应的资源。 |
| 500 | 内部服务错误。   |
| 503 | 服务不可用。    |
   
#### 错误码
无
