• 沒有找到結果。

获取 IAM 用户 Token(使用密码+虚拟 MFA)

错误码

5.1.2 获取 IAM 用户 Token(使用密码+虚拟 MFA)

}

返回值

返回值 描述

201 创建成功。

400 参数无效。

401 认证失败。

403 没有操作权限。

404 未找到相应的资源。

500 内部服务错误。

503 服务不可用。

错误码

5.1.2 获取 IAM 用户 Token(使用密码+虚拟 MFA)

功能介绍

该接口可以用于通过用户名/密码+虚拟MFA的方式进行认证,在IAM用户开启了的登 录保护功能,并选择通过虚拟MFA验证时获取IAM用户Token。

Token是系统颁发给用户的访问令牌,承载用户的身份、权限等信息。调用IAM以及其 他云服务的接口时,可以使用本接口获取的Token进行鉴权。

该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请 参见:地区和终端节点。

Token的有效期

Token的有效期为24小时。建议进行缓存,避免频繁调用。使用Token前请确保

重新获取Token,不影响已有Token有效性。如果在Token有效期内进行如下操 作,当前Token将立即失效:

– 删除/停用IAM用户。

– 修改IAM用户密码、访问密钥。

– IAM用户权限发生变化(如帐号欠费无法访问访问云服务、申请公测通过、

IAM用户权限被修改等)。

● 非华为云帐号获取Token

– 如果您的华为云帐号已升级为华为帐号,将不支持获取帐号Token,建议您为 自己创建一个IAM用户,授予该用户必要的权限,获取IAM用户Token。

– 如果您是第三方系统用户,直接使用联邦认证的用户名和密码获取Token,系 统会提示密码错误。请先在华为云的登录页面,通过“忘记密码”功能,设 置华为云帐号密码。

● 相关操作

– 如果需要获取具有Security Administrator权限的Token,请参见:如何获取 Security Administrator权限的Token。

– 通过Postman获取用户Token示例请参见:如何通过Postman获取用户 Token。

调试

您可以在API Explorer中调试该接口。

URI

POST /v3/auth/tokens

5-23 Query 参数

参数 是否

必选

参数类型 描述

nocatalog 否 String 如果设置该参数,返回的响应体中将不 显示catalog信息。任何非空字符串都将 解释为true,并使该字段生效。

请求参数

5-24 请求 Header 参数

参数 是否必选 参数

类型

描述

Content-Type 是 String 该字段内容填为“application/

json;charset=utf8”。

5-25 请求 Body 参数

identity 是 Object 认证参数。

scope 是 Object Token的使用范围,取值为project或 domain,二选一即可。

5-27 auth.identity

参数 是否

必选

参数类型 描述

methods 是 Array of

strings 认证方法,该字段内容为["password",

"totp"]。

取值范围:

● password

● totp

password 是 Object 用户密码认证信息。

说明

参数 是否 必选

参数类型 描述

totp 是 Object totp认证信息,仅在您已开启虚拟MFA 方式的登录保护功能时需要填写该参 数。

5-28 auth.identity.password

参数 是否

必选

参数类型 描述

user 是 Object 需要获取Token的IAM用户信息。

5-29 auth.identity.password.user

参数 是否

必选

参数类型 描述

domain 是 Object IAM用户所属帐号信息。了解帐号与IAM

用户的关系。

name 是 String IAM用户名。

password 是 String IAM用户的登录密码。

说明

● 务必保证密码输入正确,避免获取Token 失败。

● 如果您是第三方系统用户,直接使用联邦 认证的用户名和密码获取Token,系统会 提示密码错误。请在华为云的登录页面,

通过“忘记密码”功能,设置华为云帐号 密码,并在password中输入新设置的密 码。

5-30 auth.identity.password.user.domain

参数 是否

必选

参数类型 描述

name 是 String IAM用户所属帐号名称,获取方式请参 见:获取帐号、IAM用户、项目、用户 组、区域、委托的名称和ID。

5-31 auth.identity.totp

参数 是否

必选

参数类型 描述

user 是 Object IAM用户信息。该IAM用户已开启登录保 护,并选择以虚拟MFA方式进行身份验 证,开启/关闭登录保护方法请参见:敏 感操作。

5-32 auth.identity.totp.user

参数 是否

必选

参数类型 描述

id 是 String 已开启虚拟MFA方式的登录保护的IAM 用户ID。

passcode 是 String 虚拟MFA验证码,在MFA应用程序中获 取动态验证码,获取方法请参见:如何 获取虚拟MFA验证码。

说明务必保证验证码输入正确,避免获取Token失 败。

5-33 auth.scope

参数 是否

必选

参数类型 描述

domain 否 Object 取值为domain时,表示获取的Token可 以作用于全局服务,全局服务不区分项 目或区域,如OBS服务。如需了解服务 作用范围,请参考系统权限。domain支 持id和name,二选一即可,建议选择

“domain_id”。

project 否 Object 取值为project时,表示获取的Token可以 作用于项目级服务,仅能访问指定 project下的资源,如ECS服务。如需了解 服务作用范围,请参考系统权限。

project支持id和name,二选一即可。

5-34 auth.scope.domain

参数 是否

必选

参数类型 描述

id 否 String IAM用户所属帐号ID,获取方式请参 见:获取帐号、IAM用户、项目、用户 组、区域、委托的名称和ID。

name 否 String IAM用户所属帐号名称,获取方式请参 见:获取帐号、IAM用户、项目、用户 组、区域、委托的名称和ID。

5-35 auth.scope.project

参数 是否

必选

参数类型 描述

id 否 String IAM用户所属帐号的项目id,获取方式请 参见:获取帐号、IAM用户、项目、用 户组、区域、委托的名称和ID。

name 否 String IAM用户所属帐号的项目名称,获取方式 请参见:获取帐号、IAM用户、项目、

}

X-Subject-Token string 签名后的Token。

5-37 响应 Body 参数

参数 参数类型 描述

token Object 获取到的Token信息。

5-38 token

参数 参数类型 描述

catalog Array of

objects 服务目录信息。

domain Object 获取Token的IAM用户所属的帐号信息。如果获取 Token时请求体中scope参数设置为domain,则 返回该字段。

expires_at String Token过期时间。

mfa_authn_at String MFA验证时间。

issued_at String Token下发时间。

methods Array of

strings 获取Token的方式。

project Object 获取Token的IAM用户所属帐号的项目信息。如果 获取Token时请求体中scope参数设置为project,

则返回该字段。

roles Array of

objects Token的权限信息。

user Object 获取Token的IAM用户信息。

5-39 token.catalog

参数 参数类型 描述

endpoints Array of

objects 终端节点。

id String 服务ID。

name String 服务名称。

type String 该接口所属服务。

5-40 token.catalog.endpoints

参数 参数类型 描述

id String 终端节点ID。

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

region String 终端节点所属区域。

region_id String 终端节点所属区域ID。

参数 参数类型 描述

url String 终端节点的URL。

5-41 token.domain

参数 参数类型 描述

name String 帐号名称。

id String 帐号ID。

5-42 token.project

参数 参数类型 描述

domain Object 项目所属帐号信息。

id String 项目ID。

name String 项目名称。

5-43 token.project.domain

参数 参数类型 描述

id String 帐号ID。

name String 帐号名称。

5-44 token.roles

参数 参数类型 描述

name String 权限名称。

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

5-45 token.user

参数 参数类型 描述

name String IAM用户名。

id String IAM用户ID。

参数 参数类型 描述 password_exp

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

domain Object IAM用户所属的帐号信息。

5-46 token.user.domain

参数 参数类型 描述

name String IAM用户所属帐号名称。

id String IAM用户所属帐号ID。

响应示例

状态码为 201 时:

创建成功。

● 示例 1:获取IAM用户名为“IAMUser”,密码为“IAMPassword”,所属帐号 名为“IAMDomain”,作用范围为整个帐号的Token。

响应Header参数(获取到的Token):

X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...

响应Body参数:

{ "token": {

"expires_at": "2020-01-04T09:08:49.965000Z", "mfa_authn_at": "2020-01-03T09:08:49.965000Z", "methods": [

"name": "bssv1",

"issued_at": "2020-01-03T09:08:49.965000Z", "user": {

● 示例 2:获取IAM用户名为“IAMUser”,密码为“IAMPassword”,所属帐号 名为“IAMDomain”,作用范围为项目“cn-north-1”,且返回的响应体中将不

"expires_at": "2020-01-04T09:05:22.701000Z", "mfa_authn_at": "2020-01-03T09:05:22.701000Z", "methods": [

"id": "aa2d97d7e62c4b7da3ffdfc11551f...", "name": "cn-north-1"

},

"issued_at": "2020-01-03T09:05:22.701000Z", "user": {

错误码