错误码
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": {
错误码
无