更新时间:2022-08-16 GMT+08:00

获取临时AK/SK

功能介绍

通过已经获取的用户token、委托token和联邦token,可以获取临时的AK/SK、securitytoken(离线AK/SK)。临时AK/SK即给用户颁发的具有临时权限的令牌,遵循权限最小化原则,可应用于临时访问OBS等。

URI

POST /v3.0/OS-CREDENTIAL/securitytokens

请求消息

  • Request Header参数说明
    • 使用委托token,即methods为assume_role时

      参数

      是否必选

      类型

      描述

      X-Auth-Token

      String

      具有Agent Operator权限的token。

      Content-Type

      String

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

    • 使用普通token(用户token、联邦token),即methods为token时

      参数

      是否必选

      类型

      描述

      Content-Type

      String

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

      X-Auth-Token

      String

      用户token或者联邦token,该值与请求体中token的id二选一,X-Auth-Token优先。

  • Request Body参数说明
    • 使用委托token,即methods为assume_role时

      参数

      必选/可选

      类型

      描述

      methods

      必选

      String Array

      该字段内容为“assume_role”

      agency_name

      必选

      String

      委托方用户创建的委托的名称。

      domain_name或domain_id

      必选

      String

      委托用户的所属账号的名称。

      duration_seconds

      可选

      Int

      AK/SK和securitytoken的有效期,时间单位为秒。取值范围:15min ~ 24h ,默认为15min

      scope

      可选

      Object

      AK/SK和securitytoken。该值若不填,生成的securitytoken不包括scope信息。推荐不填。该值若填写,取值为project或domain,二选一即可。

      • 示例1:取值为project时,表示获取的AK/SK和securitytoken仅能访问指定project下的资源,project支持id和name,二选一即可。
        "scope": {
              "project": {
              "id": "0b95b78b67fa045b38104c12fb..."
              }
            }
      • 示例2:取值为domain时,表示获取的AK/SK和securitytoken可以访问指定账号下所有资源,domain支持id和name,二选一即可。
        "scope": {
              "domain": {
              "name": " domain A"
              }
            }
    • 使用普通token(用户token、联邦token),即methods为token时

      参数

      必选/可选

      类型

      描述

      methods

      必选

      String Array

      该字段内容为“token”

      token

      可选

      Json Object

      用于获取临时AK/SK的普通token或者联邦token,该对象中的id与请求头部中的X-Auth-Token二选一,X-Auth-Token优先。

      duration_seconds

      可选

      Int

      AK/SK和securitytoken的有效期,时间单位为秒。取值范围:15min ~ 24h ,默认为15min。

  • 请求示例
    • methods为assume_role方式进行请求
      {
          "auth": {
              "identity": {
                  "methods": [
                      "assume_role"
                  ],
                  "assume_role": {
                      "domain_id": "411edb4b634144f587ffc88f9bbdxxx",
                      "xrole_name": "testagency",
                      "duration_seconds": "3600"
                  }
              }
          }
      }
      
    • methods为tokens方式进行请求
      {
          "auth": {
              "identity": {
                  "methods": [
                      "token"
                  ],
                  "token": {
                      "id": "MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...",
                      "duration_seconds": "900"
                  }
              }
          }
      }

响应

  • Response Body参数说明

    参数

    必选/可选

    类型

    描述

    credential

    必选

    Object

    认证信息

  • credential内容说明

    参数

    必选/可选

    类型

    描述

    expires_at

    必选

    String

    过期时间

    access

    必选

    String

    AK

    secret

    必选

    String

    SK

    securitytoken

    必选

    String

    用于后续换SK或Token使用

  • 响应示例
    {
      "credential": {
        "access": "NQC51NFINJS1JXX...",
        "secret": "EY74MByPZ46kTRJL9ay5DskqXX...",
        "expires_at": "2017-04-17T07:55:18.575000Z",
        "securitytoken": "gAAAAABY9GbWUaGtoa9DPj7_dE4qUSnAXXX..."
      }
    }

状态码

状态码

说明

201

请求成功

400

请求失败

401

认证失败

403

鉴权失败

500

系统异常