该接口可以用于通过用户名/密码的方式进行认证来获取IAM用户的Token。Token是系统颁发给IAM用户的访问令牌,承载用户的身份、权限等信息。调用IAM以及其他云服务的接口时,可以使用本接口获取的IAM用户Token进行鉴权。
该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见:地区和终端节点。
接口使用导航:
-
无特殊要求,请按照请求参数说明获取Token。
-
华为帐号不支持直接获取帐号Token,排查是否为华为帐号请参见:怎么知道当前登录华为云使用的是“华为帐号” 还是“华为云账号”?
-
华为账号获取token请参加以下步骤:创建一个IAM用户,授予该用户必要的权限,使用创建的IAM用户,获取IAM用户Token。
-
无特殊要求,请按照请求参数说明获取Token。
-
如果您是第三方系统用户,直接使用联邦认证的用户名和密码获取Token,系统会提示密码错误。请先在华为云的登录页面,通过“忘记密码”功能,设置华为云帐号密码。
-
-
Token的有效期为24小时。建议进行缓存,避免频繁调用。使用Token前请确保Token离过期有足够的时间,防止调用API的过程中Token过期导致调用API失败。重新获取Token,不影响已有Token有效性。
-
如果在Token有效期内进行如下操作,当前Token将立即失效。
- 删除/停用IAM用户。
- 修改IAM用户密码、访问密钥。
- IAM用户权限发生变化(如帐号欠费无法访问云服务、申请公测通过、IAM用户权限被修改等)。
-
使用Token调用云服务API时, 返回“The token must be updated”,则Token过期,需要客户端重新获取Token。
-
-
用户名或密码错误:请排查输入的用户名和密码是否正确。用户名密码正确但是仍旧报错,请排查当前获取Token的帐号是否为华为帐号,华为帐号不支持直接获取Token,请新建IAM用户并授权,使用IAM用户获取Token。
没有API访问权限:调用API前,请确保已开启编程访问。
-
- 如果您开启了登录保护并设置登录保护为MFA验证,请参考获取IAM用户Token(使用密码+虚拟MFA)获取IAM用户Token。
- 如果需要获取具有Security Administrator权限的Token,请参见:如何获取Security Administrator权限的Token。
- 通过Postman获取用户Token示例请参见:如何通过Postman获取用户Token。
- 您还可以通过视频教程了解如何使用Token认证:IAM视频帮助 。
您可以在API Explorer中调试该接口。
POST /v3/auth/tokens
表 1 Query参数
表 2 请求Header参数
表 3 请求Body参数
表 4 auth
表 5 auth.identity
说明:
|
表 6 auth.identity.password
表 7 auth.identity.password.user
IAM用户所属帐号信息。了解帐号与IAM用户的关系。 |
|||
表 8 auth.identity.password.user.domain
IAM用户所属帐号名称,获取方式请参见:获取帐号、IAM用户、项目、用户组、区域、委托的名称和ID。 |
表 9 auth.scope
取值为domain时,表示获取的Token可以作用于全局服务,全局服务不区分项目或区域,如OBS服务。如需了解服务作用范围,请参考系统权限。domain支持id和name,二选一即可,建议选择“domain_id”。 |
|||
取值为project时,表示获取的Token可以作用于项目级服务,仅能访问指定project下的资源,如ECS服务。如需了解服务作用范围,请参考系统权限。project支持id和name,二选一即可。 |
表 10 auth.scope.domain
IAM用户所属帐号ID,获取方式请参见:获取帐号、IAM用户、项目、用户组、区域、委托的名称和ID。id和name,二选一即可。 |
|||
IAM用户所属帐号名称,获取方式请参见:获取帐号、IAM用户、项目、用户组、区域、委托的名称和ID。id和name,二选一即可。 |
表 11 auth.scope.project
IAM用户所属帐号的项目ID,获取方式请参见:获取帐号、IAM用户、项目、用户组、区域、委托的名称和ID。id和name,二选一即可。 |
|||
IAM用户所属帐号的项目名称,获取方式请参见:获取帐号、IAM用户、项目、用户组、区域、委托的名称和ID。id和name,二选一即可。 |
-
获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属租户名为“IAMDomain”,作用范围为项目“cn-north-1”,且返回的响应体中将不显示catalog信息的Token。
POST https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true
{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "IAMDomain" //IAM用户所属帐号名 }, "name": "IAMUser", //IAM用户名 "password": "IAMPassword" //IAM用户密码 } } }, "scope": { "project": { "name": "cn-north-1" //项目名称 } } } }
-
获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属帐号名为“IAMDomain”,作用范围为整个帐号的Token。
POST https://iam.myhuaweicloud.com/v3/auth/tokens
{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "IAMDomain" //IAM用户所属帐号名 }, "name": "IAMUser", //IAM用户名 "password": "IAMPassword" //IAM用户密码 } } }, "scope": { "domain": { "name": "IAMDomain" //IAM用户所属帐号名 } } } }
表 12 响应Header参数
表 13 响应Body参数
表 14 Token
获取Token的IAM用户所属帐号的项目信息。如果获取Token时请求体中scope参数设置为project,则返回该字段。 |
||
表 15 Token.catalog
表 16 Token.catalog.endpoints
表 17 Token.domain
表 18 Token.project
表 19 Token.project.domain
表 20 Token.roles
表 21 Token.user
表 22 Token.user.domain
状态码为 201 时:
创建成功。
-
获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属帐号名为“IAMDomain”,作用范围为项目“cn-north-1”,且返回的响应体中将不显示catalog信息的Token。
响应Header参数(获取到的Token): X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
响应Body参数: { "token": { "catalog": [], "expires_at": "2020-01-04T09:05:22.701000Z", "issued_at": "2020-01-03T09:05:22.701000Z", "methods": [ "password" ], "project": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "aa2d97d7e62c4b7da3ffdfc11551f...", "name": "cn-north-1" }, "roles": [ { "id": "0", "name": "te_admin" }, { "id": "0", "name": "op_gated_OBS_file_protocol" }, { "id": "0", "name": "op_gated_Video_Campus" } ], "user": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "7116d09f88fa41908676fdd4b039e...", "name": "IAMUser", "password_expires_at": "" } } }
-
获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属帐号名为“IAMDomain”,作用范围为整个帐号的Token。
响应Header参数(获取到的Token): X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
响应Body参数: { "token": { "catalog": [ { "endpoints": [ { "id": "33e1cbdd86d34e89a63cf8ad16a5f...", "interface": "public", "region": "*", "region_id": "*", "url": "https://iam.myhuaweicloud.com/v3.0" } ], "id": "100a6a3477f1495286579b819d399...", "name": "iam", "type": "iam" }, { "endpoints": [ { "id": "29319cf2052d4e94bcf438b55d143...", "interface": "public", "region": "*", "region_id": "*", "url": "https://bss.sample.domain.com/v1.0" } ], "id": "c6db69fabbd549908adcb861c7e47...", "name": "bssv1", "type": "bssv1" } ], "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "expires_at": "2020-01-04T09:08:49.965000Z", "issued_at": "2020-01-03T09:08:49.965000Z", "methods": [ "password" ], "roles": [ { "id": "0", "name": "te_admin" }, { "id": "0", "name": "secu_admin" }, { "id": "0", "name": "te_agency" } ], "user": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "7116d09f88fa41908676fdd4b039e...", "name": "IAMUser", "password_expires_at": "" } } }
状态码为 400 时:
参数无效。请排查body体是否符合json语法。
{
"error": {
"code": 400,
"message": "The request body is invalid",
"title": "Bad Request"
}
}
状态码为 401 时:
认证失败。
- 如果您是第三方系统用户,直接使用联邦认证的用户名和密码获取Token,系统会提示密码错误。请在华为云的登录页面,通过“忘记密码”功能,设置华为云帐号密码,并在password中输入新设置的密码。
- 如果您的华为云帐号已升级为华为帐号,直接使用华为帐号名和密码获取Token,系统会提示密码错误。建议您为自己创建一个IAM用户,授予该用户必要的权限,获取IAM用户Token。
{
"error": {
"code": 401,
"message": "The username or password is wrong.",
"title": "Unauthorized"
}
}
无