
# 获取联邦认证unscoped token(IdP initiated) - CreateUnscopeTokenByIdpInitiated
#### 功能介绍
该接口可以用于通过IdP initiated的联邦认证方式获取unscoped token。
Unscoped 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)。
![](https://support.huaweicloud.com/api-iam/public_sys-resources/note_3.0-zh-cn.png)
- 该接口支持在命令行侧调用，需要客户端使用IdP initiated的联邦认证方式获取SAMLResponse，并采用浏览器提交表单数据的方式，获取unscoped token。
 
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IAM/doc?api=CreateUnscopeTokenByIdpInitiated)中调试该接口。
#### 授权信息
当前API调用无需策略权限。
#### URI
POST /v3.0/OS-FEDERATION/tokens
#### 请求参数
表1请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                 |
|:---|:---|:---|:---|
| Content-Type | 是    | String | 客户端必须使用浏览器提交表单数据的方式向服务端传SAMLResponse参数，故该字段需取值如下：application/x-www-form-urlencoded |
| X-Idp-Id     | 是    | String | 身份提供商ID。                                                                           |
   
表2请求formData参数 
| 参数           | 是否必选 | 参数类型   | 描述               |
|:---|:---|:---|:---|
| SAMLResponse | 是    | String | 在IdP认证成功后返回的响应体。 |
   
SAMLResponse获取方式：
1. 在浏览器的地址栏输入并跳转链接：https://idp.example.org/idp/profile/SAML2/Unsolicited/SSO?providerId=iam.example.com。
2. idp.example.org ：IDPmetadata中的entityID； iam.example.com ：SPmetadata中获取的entityID。
   
3. 该链接可打开身份提供商登录页面，根据需要输入映射规则中的用户名（支持免密登录），单击登录，跳入认证页面后按F12，单击认证页面的accept。从下图所示的POST中获取SAMLResponse。
   图1获取SAMLResponse   
   ![](https://support.huaweicloud.com/api-iam/zh-cn_image_0226093583.png "点击放大") 
 
#### 响应参数
表3响应Header参数 
| 参数              | 参数类型   | 描述                  |
|:---|:---|:---|
| X-Subject-Token | String | 签名后的unscoped token。 |
   
表4响应Body参数 
| 参数                                                                 | 参数类型   | 描述                     |
|:---|:---|:---|
| [token] | Object | 联邦认证的unscoped token信息。 |
   
 表5token 
| 参数                                                                    | 参数类型             | 描述                                                                                                                                                                                                                                                 |
|:---|:---|:---|
| 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。 |
| 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。 |
| methods                                                               | Array of strings | 获取token的方式。                                                                                                                                                                                                                                        |
| [user] | Object           | 获取token的用户信息。                                                                                                                                                                                                                                      |
   
 表6token.user 
| 参数                                                                                         | 参数类型   | 描述        |
|:---|:---|:---|
| [domain]              | Object | 用户所属账号信息。 |
| id                                                                                         | String | 用户ID。     |
| name                                                                                       | String | 用户名称。     |
| [OS-FEDERATION] | Object | 联邦身份认证信息。 |
   
 表7token.user.domain 
| 参数   | 参数类型   | 描述        |
|:---|:---|:---|
| name | String | 用户所属账号名。  |
| id   | String | 用户所属账号ID。 |
   
 表8token.user.OS-FEDERATION 
| 参数                                                                                                             | 参数类型             | 描述       |
|:---|:---|:---|
| [groups]               | Array of objects | 用户组信息列表。 |
| [identity_provider] | Object           | 身份提供商信息。 |
| [protocol]                  | Object           | 协议信息。    |
   
 表9token.user.OS-FEDERATION.groups 
| 参数   | 参数类型   | 描述     |
|:---|:---|:---|
| id   | String | 用户组ID。 |
| name | String | 用户组名称。 |
   
 表10token.user.OS-FEDERATION.identity_provider 
| 参数 | 参数类型   | 描述       |
|:---|:---|:---|
| id | String | 身份提供商ID。 |
   
 表11token.user.OS-FEDERATION.protocol 
| 参数 | 参数类型   | 描述    |
|:---|:---|:---|
| id | String | 协议ID。 |
   
#### 请求示例
获取联邦认证unscoped token(IdP initiated)。
```
POST https://iam.myhuaweicloud.com/v3.0/OS-FEDERATION/tokens
```
```
SAMLResponse=PD94b...
```
#### 响应示例
**状态码为 201 时:**
创建成功。
```
响应Header参数：
X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
```
```
响应Body参数：
{
    "token": {
        "expires_at": "2020-02-13T14:21:34.042000Z",
        "methods": [
            "mapped"
        ],
        "issued_at": "2020-02-12T14:21:34.042000Z",
        "user": {
            "OS-FEDERATION": {
                "identity_provider": {
                    "id": "ACME"
                },
                "protocol": {
                    "id": "saml"
                },
                "groups": [
                    {
                        "id": "06aa22601502cec4a23ac0084a74038f",
                        "name": "admin"
                    }
                ]
            },
            "domain": {
                "name": "IAMDomain",
                "id": "06ba0970a097acc0f36c0086bb6cfe0"
            },
            "name": "FederationUser",
            "id": "LdUTYSC7zmJVIic3yaCbLBXDxPAdDxLg"
        }
    }
}
```
#### 返回值
| 返回值 | 描述      |
|:---|:---|
| 201 | 创建成功。   |
| 400 | 参数无效。   |
| 401 | 认证失败。   |
| 403 | 没有操作权限。 |
| 405 | 不允许的方法。 |
| 413 | 请求体过大。  |
| 500 | 内部服务错误。 |
| 503 | 服务不可用。  |
   
#### 错误码
无
