获取IAM用户Token(使用密码)
功能介绍
该接口可以用于通过用户名/密码的方式进行认证来获取IAM用户Token。
Token是系统颁发给IAM用户的访问令牌,承载用户的身份、权限等信息。调用IAM以及其他云服务的接口时,可以使用本接口获取的IAM用户Token进行鉴权。
该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见:地区和终端节点。

- Token的有效期为24小时,建议进行缓存,避免频繁调用。
- 使用Token前请确保Token离过期有足够的时间,防止调用API的过程中Token过期导致调用API失败。
- 无论是否重新获取Token,在有效期内的Token始终有效。
- 通过Postman获取用户Token示例请参见:如何通过Postman获取用户Token。
- 如果需要获取具有Security Administrator权限的Token,请参见:IAM 常见问题。
- 如果您开启了登录保护并设置登录保护为MFA验证,请参考获取IAM用户Token(使用密码+虚拟MFA)获取IAM用户Token。
调试
您可以在API Explorer中直接运行调试该接口。
URI
POST /v3/auth/tokens
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
nocatalog |
否 |
String |
如果设置该参数,返回的响应体中将不显示catalog信息。任何非空字符串都将解释为true,并使该字段生效。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
该字段内容填为“application/json;charset=utf8”。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
是 |
Object |
认证信息。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
是 |
Object |
认证参数。 |
|
是 |
Object |
Token的使用范围,取值为project或domain,二选一即可。 说明:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
methods |
是 |
Array of strings |
认证方法,该字段内容为["password"]。 取值范围:
|
是 |
Object |
IAM用户密码认证信息。 说明:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
是 |
Object |
IAM用户所属帐号信息。 |
|
name |
是 |
String |
IAM用户名。 |
password |
是 |
String |
IAM用户的登录密码。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
否 |
Object |
取值为domain时,表示获取的Token可以跨区域使用,domain支持id和name,二选一即可,建议选择“domain_id”。 |
|
否 |
Object |
取值为project时,表示获取的Token仅能访问指定project下的资源,project支持id和name,二选一即可。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
id |
否 |
String |
IAM用户所属帐号ID,获取方式请参见:获取帐号、IAM用户、项目、用户组、区域、委托的名称和ID。id和name,二选一即可。 |
name |
否 |
String |
IAM用户所属帐号名称,获取方式请参见:获取帐号、IAM用户、项目、用户组、区域、委托的名称和ID。id和name,二选一即可。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
id |
否 |
String |
IAM用户所属帐号的项目ID,获取方式请参见:获取帐号、IAM用户、项目、用户组、区域、委托的名称和ID。id和name,二选一即可。 |
name |
否 |
String |
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用户所属帐号名 } } } }
响应参数
参数 |
参数类型 |
描述 |
---|---|---|
X-Subject-Token |
string |
签名后的Token。 |
参数 |
参数类型 |
描述 |
---|---|---|
Token |
Object |
获取到的Token信息。 |
参数 |
参数类型 |
描述 |
---|---|---|
Array of objects |
服务目录信息。 |
|
Object |
获取Token的IAM用户所属的帐号信息。如果获取Token时请求体中scope参数设置为domain,则返回该字段。 |
|
expires_at |
String |
Token过期时间。 |
issued_at |
String |
Token下发时间。 |
methods |
Array of strings |
获取Token的方式。 |
Object |
获取Token的IAM用户所属帐号的项目信息。如果获取Token时请求体中scope参数设置为project,则返回该字段。 |
|
Array of objects |
Token的权限信息。 |
|
Object |
获取Token的IAM用户信息。 |
参数 |
参数类型 |
描述 |
---|---|---|
Array of objects |
终端节点。 |
|
id |
String |
服务ID。 |
name |
String |
服务名称。 |
type |
String |
该接口所属服务。 |
参数 |
参数类型 |
描述 |
---|---|---|
id |
String |
终端节点ID。 |
interface |
String |
接口类型,描述接口在该终端节点的可见性。值为“public”,表示该接口为公开接口。 |
region |
String |
终端节点所属区域。 |
region_id |
String |
终端节点所属区域ID。 |
url |
String |
终端节点的URL。 |
响应示例
状态码为 201 时:
创建成功。
- 获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属帐号名为“IAMDomain”,作用范围为项目“cn-north-1”,且返回的响应体中将不显示catalog信息的Token。
响应Header参数: 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参数: 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.myhuaweicloud.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 时:
参数无效。
{ "error": { "code": 400, "message": "The request body is invalid", "title": "Bad Request" } }
状态码为 401 时:
认证失败。
{ "error": { "code": 401, "message": "The username or password is wrong.", "title": "Unauthorized" } }
返回值
返回值 |
描述 |
---|---|
201 |
创建成功。 |
400 |
参数无效。 |
401 |
认证失败。 |
403 |
没有操作权限。 |
404 |
未找到相应的资源。 |
500 |
内部服务错误。 |
503 |
服务不可用。 |
错误码
无
