获取联邦认证token(OpenID Connect ID token方式)
功能介绍
该接口可以用于通过OpenID Connect ID token方式获取联邦认证token。
推荐您只通过该接口获取unscoped token,再使用unscoped token通过接口获取联邦用户的临时访问密钥和securitytoken获取临时访问密钥和securitytoken,后续使用获取到的临时访问密钥和securitytoken作为凭证访问云服务。
该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见:地区和终端节点。
调试
您可以在API Explorer中调试该接口。
URI
POST /v3.0/OS-AUTH/id-token/tokens
请求参数
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        X-Idp-Id  | 
      
        是  | 
      
        String  | 
      
        身份提供商ID。  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        是  | 
      
        object  | 
      
        请求auth参数详情。  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        是  | 
      
        object  | 
      
        请求id token参数详情。  | 
     |
| 
        否  | 
      
        object  | 
      
        请求scope参数详情,限制获取token的权限范围。不传此字段,获取unscoped token。  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        id  | 
      
        是  | 
      
        String  | 
      
        id_token的值。id_token由企业IdP构建,携带联邦用户身份信息。请参考企业IdP文档了解获取id_token的方法。  | 
     
响应参数
状态码为 201 时:
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        X-Subject-Token  | 
      
        String  | 
      
        签名后的Token。  | 
     
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        object  | 
      
        获取的token详情。  | 
     
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        expires_at  | 
      
        String  | 
      
        过期时间。 
         说明: 
         UTC时间,格式为YYYY-MM-DDTHH:mm:ss.ssssssZ,日期和时间戳格式参照ISO-8601,如:2023-06-28T08:56:33.710000Z。  | 
     
| 
        methods  | 
      
        Array of strings  | 
      
        获取token的方式,联邦用户默认为mapped。  | 
     
| 
        issued_at  | 
      
        String  | 
      
        生成时间。 
         说明: 
         UTC时间,格式为YYYY-MM-DDTHH:mm:ss.ssssssZ,日期和时间戳格式参照ISO-8601,如:2023-06-28T08:56:33.710000Z。  | 
     
| 
        object  | 
      
        用户详情。  | 
     |
| 
        object  | 
      
        租户详情。  | 
     |
| 
        object  | 
      
        项目详情,仅请求scope为project时,返回此对象。  | 
     |
| 
        Array of objects  | 
      
        角色/策略详情。  | 
     |
| 
        Array of objects  | 
      
        catalog详情。  | 
     
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        Array of objects  | 
      
        终端节点。  | 
     |
| 
        id  | 
      
        String  | 
      
        服务ID。  | 
     
| 
        name  | 
      
        String  | 
      
        服务名称。  | 
     
| 
        type  | 
      
        String  | 
      
        该接口所属服务。  | 
     
请求示例
- 获取联邦认证project scoped token
    
POST /v3.0/OS-AUTH/id-token/tokens
{ "auth" : { "id_token" : { "id" : "eyJhbGciOiJSU..." }, "scope" : { "project" : { "id" : "46419baef4324...", "name" : "cn-north-1" } } } } - 获取联邦认证domain scoped token
    
POST /v3.0/OS-AUTH/id-token/tokens
{ "auth" : { "id_token" : { "id" : "eyJhbGciOiJSU..." }, "scope" : { "domain" : { "id" : "063bb260a480...", "name" : "IAMDomain" } } } } - 获取unscoped token
    
POST /v3.0/OS-AUTH/id-token/tokens
{ "auth" : { "id_token" : { "id" : "eyJhbGciOiJSU..." } } } 
响应示例
状态码为 201 时:
创建成功。
{ 
  "token" : { 
    "expires_at" : "2018-03-13T03:00:01.168000Z", 
    "methods" : [ "mapped" ], 
    "issued_at" : "2018-03-12T03:00:01.168000Z", 
    "user" : { 
      "OS-FEDERATION" : { 
        "identity_provider" : { 
          "id" : "idptest" 
        }, 
        "protocol" : { 
          "id" : "oidc" 
        }, 
        "groups" : [ { 
          "name" : "admin", 
          "id" : "45a8c8f..." 
        } ] 
      }, 
      "domain" : { 
        "id" : "063bb260a480...", 
        "name" : "IAMDomain" 
      }, 
      "name" : "FederationUser", 
      "id" : "suvmgvUZc4PaCOEc..." 
    } 
  } 
}
  状态码为 400 时:
参数无效。
{ 
  "error_msg" : "Request body is invalid.", 
  "error_code" : "IAM.0011" 
}
  状态码为 401 时:
认证失败。
{ 
  "error_msg" : "The request you have made requires authentication.", 
  "error_code" : "IAM.0001" 
}
  状态码为 403 时:
没有操作权限。
{ 
  "error_msg" : "Policy doesn't allow %(actions)s to be performed.", 
  "error_code" : "IAM.0003" 
}
  状态码为 404 时:
未找到相应的资源。
{ 
  "error_msg" : "Could not find %(target)s: %(target_id)s.", 
  "error_code" : "IAM.0004" 
}
  状态码为 500 时:
系统内部异常。
{ 
  "error_msg" : "An unexpected error prevented the server from fulfilling your request.", 
  "error_code" : "IAM.0006" 
}
 状态码
| 
        状态码  | 
      
        描述  | 
     
|---|---|
| 
        201  | 
      
        创建成功。  | 
     
| 
        400  | 
      
        参数无效。  | 
     
| 
        401  | 
      
        认证失败。  | 
     
| 
        403  | 
      
        没有操作权限。  | 
     
| 
        404  | 
      
        未找到相应的资源。  | 
     
| 
        500  | 
      
        系统内部异常。  | 
     
错误码
请参见错误码。