更新时间:2022-08-16 GMT+08:00

获取联邦认证scoped token

功能介绍

该接口可以用于通过联邦认证方式获取scoped token。

URI

POST /v3/auth/tokens

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

该字段内容填为“application/json;charset=utf8”。

表2 请求Body参数

参数

是否必选

参数类型

描述

auth

Object

认证信息。

表3 auth

参数

是否必选

参数类型

描述

identity

Object

认证参数。

scope

Object

token的使用范围,取值为project或domain,二选一即可。

表4 auth.identity

参数

是否必选

参数类型

描述

methods

Array of strings

认证方法,该字段内容为“token”。

token

Object

联邦unscoped token的信息。

表5 auth.identity.token

参数

是否必选

参数类型

描述

id

String

联邦unscoped token的ID。

表6 auth.scope

参数

是否必选

参数类型

描述

domain

Object

取值为domain时,表示获取的token可以跨区域使用,domain支持id和name,二选一即可。

project

Object

取值为project时,表示获取的token仅能访问指定project下的资源,project支持id和name,二选一即可。

表7 auth.scope.domain

参数

是否必选

参数类型

描述

id

String

账号ID,id与name二选一即可。

name

String

账号名,id与name二选一即可。

表8 auth.scope.project

参数

是否必选

参数类型

描述

domain

Object

项目所属账号,使用name时必填。

id

String

项目ID,id与name二选一即可。

name

String

项目名,id与name二选一即可。

表9 auth.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信息。

表12 token

参数

参数类型

描述

methods

Array of strings

获取token的方式。

expires_at

String

token过期时间。

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下发时间。

表13 token.catalog

参数

参数类型

描述

type

String

该接口所属服务。

id

String

服务ID。

name

String

服务名称。

endpoints

Array of objects

终端节点。

表14 token.catalog.endpoints

参数

参数类型

描述

url

String

终端节点的URL。

region

String

终端节点所属区域。

region_id

String

终端节点所属区域ID。

interface

String

接口类型,描述接口在该终端节点的可见性。值为“public”,表示该接口为公开接口。

id

String

终端节点ID。

表15 token.domain

参数

参数类型

描述

name

String

账号名。

id

String

账号ID。

表16 token.project

参数

参数类型

描述

name

String

项目名。

id

String

项目ID。

domain

Object

项目所属账号信息。

表17 token.project.domain

参数

参数类型

描述

name

String

账号名。

id

String

账号ID。

表18 token.roles

参数

参数类型

描述

name

String

权限名称。

id

String

权限ID。默认显示为0,非真实权限ID。

表19 token.user

参数

参数类型

描述

domain

Object

用户所属账号信息。

OS-FEDERATION

Object

联邦身份认证信息。

id

String

用户ID。

name

String

用户名。

password_expires_at

String

密码过期时间(UTC时间),“”表示密码不过期。

表20 token.user.domain

参数

参数类型

描述

name

String

用户所属账号名称。

id

String

用户所属账号ID。

表21 token.user.OS-FEDERATION

参数

参数类型

描述

groups

Array of objects

用户组信息列表。

identity_provider

Object

身份提供商信息。

protocol

Object

协议信息。

表22 token.user.OS-FEDERATION.groups

参数

参数类型

描述

id

String

用户组ID。

name

String

用户组名称。

表23 token.user.OS-FEDERATION.identity_provider

参数

参数类型

描述

id

String

身份提供商ID。

表24 token.user.OS-FEDERATION.protocol

参数

参数类型

描述

id

String

协议ID。

请求示例

POST https://sample.domain.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": "d2983f677ce14f1e81cbb6a9345a1...",
                        "interface": "public",
                        "region": "*",
                        "region_id": "*",
                        "url": "https://sample.domain.com/v3"
                    }
                ],
                "id": "fd631b3426cb40f0919091d5861d8...",
                "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

服务不可用。

错误码