获取联邦认证token(OpenID Connect ID token方式)
功能介绍
该接口可以用于通过OpenID Connect ID token方式获取联邦认证token。
该接口可以使用全局区域的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 toke。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
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 |
项目详情。 |
|
Array of objects |
角色/策略详情。 |
|
Array of objects |
catalog详情。 |
请求示例
- 获取联邦认证project scoped token
POST /v3.0/OS-AUTH/id-token/tokens
{ "auth" : { "id_token" : { "id" : "eyJhbGciOiJSU..." }, "scope" : { "project" : { "id" : "46419baef4324...", "name" : "ap-southeast-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 |
系统内部异常。 |
错误码
请参见错误码。