文档首页> 统一身份认证服务 IAM> API参考> API> 访问密钥管理> 通过token获取临时访问密钥和securitytoken
更新时间:2023-11-29 GMT+08:00

通过token获取临时访问密钥和securitytoken

功能介绍

该接口可以用于通过token来获取临时AK/SK和securitytoken。临时AK/SK和securitytoken是系统颁发给IAM用户的临时访问令牌,有效期可在15分钟至24小时范围内设置,过期后需要重新获取。临时AK/SK和securitytoken遵循权限最小化原则。

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

使用获取到的临时AK/SK和securitytoken作为凭证访问云服务,临时AK/SK和securitytoken两者必须同时使用,请求头中需要添加“x-security-token”字段,使用方法详情请参考:使用临时AK/SK做签名

URI

POST /v3.0/OS-CREDENTIAL/securitytokens

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

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

X-Auth-Token

String

IAM用户token或联邦用户的token或委托token。

表2 请求Body参数

参数

是否必选

参数类型

描述

auth

Object

认证信息。

表3 auth

参数

是否必选

参数类型

描述

identity

Object

认证参数。

表4 auth.identity

参数

是否必选

参数类型

描述

methods

Array of strings

认证方法,该字段内容为["token"]。

token

Object

临时访问密钥和securitytoken的有效期。

policy

Object

用户自定义策略的信息,用于限制获取到的临时访问密钥和securitytoken的权限(当前仅适用限制OBS服务的权限)。

如果填写此参数,则临时访问密钥和securitytoken的权限为:原token具有的权限和policy参数限制的权限交集。

关于IAM策略的格式和语法,请参考:策略

表5 auth.identity.policy

参数

是否必选

参数类型

描述

Version

String

权限版本号,创建自定义策略时,该字段值填为“1.1”。

说明:

1.1:策略。IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。

Statement

Array of objects

授权语句,描述自定义策略的具体内容。

表6 auth.identity.policy.Statement

参数

是否必选

参数类型

描述

Action

Array of strings

授权项,指对资源的具体操作权限。支持的授权项请参考各云服务《API参考》中“权限和授权项”章节。

说明:
  • 格式为:服务名:资源类型:操作,例:vpc:ports:create。
  • 服务名为产品名称,例如ecs、evs和vpc等,服务名仅支持小写。 资源类型和操作没有大小写,要求支持通配符号*,无需罗列全部授权项。

Effect

String

作用。包含两种:允许(Allow)和拒绝(Deny),既有Allow又有Deny的授权语句时,遵循Deny优先的原则。

取值范围:

  • Allow
  • Deny

Condition

Map<String,Map<String,Array<String>>>

限制条件。了解更多相关参数,请参考:策略语法

说明:

以请求示例中的Condition为例:当帐号名(DomainName)等于DomainNameExample时,该策略才会生效。

 "Condition": {
              "StringEquals": {
                "g:DomainName": [
                  "DomainNameExample"
                ]
              }
            }

Resource

Array of strings

资源。规则如下:

说明:
  • 格式为“服务名:region:domainId:资源类型:资源路径”, 资源类型支持通配符号*,通配符号*表示所有。如"obs:*:*:bucket:*": 表示所有的OBS桶。支持IAM资源粒度授权的云服务,请参考支持IAM资源粒度授权的云服务
  • region字段为*或用户可访问的region。service必须存在且resource属于对应service。
  • 其中,服务名、region、domainId、资源类型的格式为:由字母、数字、下划线、连字符、星号组成,长度为1到50个字符;资源路径的格式为:由除分号、竖线、波浪线、反引号、大括号、中括号、尖括号以外的任意字符组成,长度为1到1200个字符。
表7 auth.identity.token

参数

是否必选

参数类型

描述

id

String

即token,若请求Header中不传X-Auth-Token,则须填此参数。

duration_seconds

Integer

临时访问密钥和securitytoken的有效期,时间单位为秒。

取值范围:15分钟 ~ 24小时 ,默认为15分钟。

响应参数

表8 响应Body参数

参数

参数类型

描述

credential

Object

认证结果信息。

表9 credential

参数

参数类型

描述

expires_at

String

AK/SK和securitytoken的过期时间。响应参数为UTC时间格式。

access

String

获取的AK。

secret

String

获取的SK。

securitytoken

String

securitytoken是将所获的AK、SK等信息进行加密后的字符串。

请求示例

  • 填写"token"参数。包含tokenId(即token)和临时访问密钥和securitytoken的有效期。
    POST https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/securitytokens
    {
        "auth": {
            "identity": {
                "methods": [
                    "token"
                ],
                "token": {
                    "id": "MIIEIgYJKoZIhvc...",
                    "duration_seconds": "900"
                }
            }
        }
    }
  • 不填写“token”参数(请求头中需要X-Auth-Token)。
    POST https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/securitytokens
    {
        "auth": {
            "identity": {
                "methods": [
                    "token"
                ]
            }
        }
    }
  • 填写“policy”参数。即用户自定义策略的信息,用于限制获取到的临时访问密钥和securitytoken的权限(当前仅适用限制OBS服务的权限)。如果填写此参数,则临时访问密钥和securitytoken的权限为:原token具有的权限和policy参数限制的权限交集。
    POST https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/securitytokens
    {
      "auth": {
        "identity": {
          "methods": [
            "token"
          ],
          "policy": {
            "Version": "1.1",
            "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                  "obs:object:GetObject"
                ],
                "Resource": [
                  "OBS:*:*:object:*"
                ],
                "Condition": {
                  "StringEquals": {
                    "g:DomainName": [
                      "DomainNameExample"                    //示例,表示限制条件值,根据实际情况填写
                    ]
                  }
                }
              }
            ]
          },
          "token": {
            "duration_seconds": 900
          }
        }
      }
    }

响应示例

状态码为 201 时:

创建成功。

{
    "credential": {
        "access": "NZFAT5VNWEJDGZ4PZ...",
        "expires_at": "2020-01-08T03:50:07.574000Z",
        "secret": "riEoWsy3qO0BvgwfkoLVgCUvzgpjBBcvdq...",
        "securitytoken": "gQpjbi1ub3J0aC00jD4Ej..."
    }
}

返回值

返回值

描述

201

创建成功。

400

参数无效。

401

认证失败。

403

没有操作权限。

500

内部服务错误。

错误码