文档首页/ 统一身份认证服务 IAM/ API参考/ API/ 访问密钥管理/ 获取用户的临时访问密钥和securitytoken
更新时间:2024-11-18 GMT+08:00

获取用户的临时访问密钥和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做签名

调试

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

URI

POST /v3.0/OS-CREDENTIAL/securitytokens

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

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

Authorization

String

X-Auth-Token和Authorization二选一,推荐使用Authorization方式,AK/SK签名认证后会生成Authorization Header。更多信息请参考AK/SK签名认证算法详解

X-Auth-Token

String

X-Auth-Token和Authorization二选一,推荐使用Authorization方式。IAM用户Token或联邦用户的Token或委托Token。通过调用获取IAM用户Token或委托Token,在参数X-Subject-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参数限制的权限交集。policy参数的字符个数不大于2048。

关于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

内部服务错误。

错误码