更新时间:2023-12-13 GMT+08:00

绑定签名密钥

功能介绍

签名密钥创建后,需要绑定到API才能生效。

将签名密钥绑定到API后,则API网关请求后端服务时就会使用这个签名密钥进行加密签名,后端服务可以校验这个签名来验证请求来源。

将指定的签名密钥绑定到一个或多个已发布的API上。同一个API发布到不同的环境可以绑定不同的签名密钥;一个API在发布到特定环境后只能绑定一个签名密钥。

调用方法

请参见如何调用API

URI

POST /v2/{project_id}/apigw/instances/{instance_id}/sign-bindings

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,获取方式请参见获取项目ID

instance_id

String

实例ID,在API网关控制台的“实例信息”中获取。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

表3 请求Body参数

参数

是否必选

参数类型

描述

sign_id

String

签名密钥编号

publish_ids

Array of strings

API的发布记录编号

响应参数

状态码: 201

表4 响应Body参数

参数

参数类型

描述

bindings

Array of SignApiBindingInfo objects

API与签名密钥的绑定关系列表

表5 SignApiBindingInfo

参数

参数类型

描述

publish_id

String

API的发布编号

api_id

String

API编号

group_name

String

API所属分组的名称

binding_time

String

绑定时间

env_id

String

API所属环境的编号

env_name

String

API所属环境的名称

api_type

Integer

API类型

api_name

String

API名称

id

String

绑定关系的ID

api_remark

String

API描述

sign_id

String

签名密钥的编号

sign_name

String

签名密钥的名称。支持汉字,英文,数字,下划线,且只能以英文和汉字开头,3 ~ 64字符。

说明:

中文字符必须为UTF-8或者unicode编码。

req_method

String

API请求方法

枚举值:

  • GET

  • POST

  • DELETE

  • PUT

  • PATCH

  • HEAD

  • OPTIONS

  • ANY

sign_key

String

签名密钥的key。

  • hmac类型的签名密钥key:支持英文,数字,下划线,中划线,且只能以英文字母或数字开头,8 ~ 32字符。未填写时后台自动生成。

  • basic类型的签名密钥key:支持英文,数字,下划线,中划线,且只能以英文字母开头,4 ~ 32字符。未填写时后台自动生成。

  • public_key类型的签名密钥key:支持英文,数字,下划线,中划线,+,/,=,可以英文字母,数字,+,/开头,8 ~ 512字符。未填写时后台自动生成。

  • aes类型的签名密钥key:支持英文,数字,下划线,中划线,!,@,#,$,%,+,/,=,可以英文字母,数字,+,/开头,签名算法为aes-128-cfb时为16个字符,签名算法为aes-256-cfb时为32个字符。未填写时后台自动生成。

sign_secret

String

签名密钥的密钥。

  • hmac类型的签名密钥key:支持英文,数字,下划线,中划线,!,@,#,$,%,且只能以英文字母或数字开头,16 ~ 64字符。未填写时后台自动生成。

  • basic类型的签名密钥key:支持英文,数字,下划线,中划线,!,@,#,$,%,且只能以英文字母或数字开头,8 ~ 64字符。未填写时后台自动生成。

  • public_key类型的签名密钥key:支持英文,数字,下划线,中划线,!,@,#,$,%,+,/,=,可以英文字母,数字,+,/开头,15 ~ 2048字符。未填写时后台自动生成。

  • aes类型签名密钥使用的向量:支持英文,数字,下划线,中划线,!,@,#,$,%,+,/,=,可以英文字母,数字,+,/开头,16个字符。未填写时后台自动生成。

sign_type

String

签名密钥类型:

  • hmac

  • basic

  • public_key

  • aes

basic类型需要实例升级到对应版本,若不存在可联系技术工程师升级。

public_key类型开启实例配置public_key才可使用,实例特性配置详情请参考“附录 > 实例支持的APIG特性”,如确认实例不存在public_key配置可联系技术工程师开启。

aes类型需要实例升级到对应版本,若不存在可联系技术工程师升级。

枚举值:

  • hmac

  • basic

  • public_key

  • aes

状态码: 400

表6 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 401

表7 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 403

表8 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 404

表9 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 500

表10 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

请求示例

将指定的签名密钥绑定到已发布的API上

{
  "sign_id" : "0b0e8f456b8742218af75f945307173c",
  "publish_ids" : [ "40e7162dc6b94bbbbb1a60d2a24b1b0c" ]
}

响应示例

状态码: 201

Created

{
  "bindings" : [ {
    "api_id" : "5f918d104dc84480a75166ba99efff21",
    "sign_secret" : "dc0************2b3",
    "group_name" : "api_group_001",
    "sign_id" : "0b0e8f456b8742218af75f945307173c",
    "sign_key" : "a071a20d460a4f639a636c3d7e3d8163",
    "binding_time" : "2020-08-03T04:00:11.638167852Z",
    "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID",
    "env_name" : "RELEASE",
    "sign_name" : "signature_demo",
    "api_type" : 1,
    "api_name" : "Api_http",
    "id" : "25082bd52f74442bb1d273993d567938",
    "api_remark" : "Web backend API"
  } ]
}

状态码: 400

Bad Request

{
  "error_code" : "APIG.2012",
  "error_msg" : "Invalid parameter value,parameterName:sign_id. Please refer to the support documentation"
}

状态码: 401

Unauthorized

{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}

状态码: 403

Forbidden

{
  "error_code" : "APIG.1005",
  "error_msg" : "No permissions to request this method"
}

状态码: 404

Not Found

{
  "error_code" : "APIG.3017",
  "error_msg" : "Signature key 0b0e8f456b8742218af75f945307173c does not exist"
}

状态码: 500

Internal Server Error

{
  "error_code" : "APIG.9999",
  "error_msg" : "System error"
}

状态码

状态码

描述

201

Created

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

500

Internal Server Error

错误码

请参见错误码