更新时间:2024-11-11 GMT+08:00
分享

创建签名密钥

功能介绍

为了保护API的安全性,建议租户为API的访问提供一套保护机制,即租户开放的API,需要对请求来源进行认证,不符合认证的请求直接拒绝访问。

其中,签名密钥就是API安全保护机制的一种。

租户创建一个签名密钥,并将签名密钥与API进行绑定,则API网关在请求这个API时,就会使用绑定的签名密钥对请求参数进行数据加密,生成签名。当租户的后端服务收到请求时,可以校验这个签名,如果签名校验不通过,则该请求不是API网关发出的请求,租户可以拒绝这个请求,从而保证API的安全性,避免API被未知来源的请求攻击。

调用方法

请参见如何调用API

URI

POST /v2/{project_id}/apigw/instances/{instance_id}/signs

表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参数

参数

是否必选

参数类型

描述

name

String

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

说明:

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

最小长度:3

最大长度:64

sign_type

String

签名密钥类型:

  • hmac

  • basic

  • public_key

  • aes

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

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

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

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:支持英文,数字,下划线,中划线,!,@,#,$,%,+,/,=,可以英文字母,数字,+,/开头,16 ~ 2048字符。未填写时后台自动生成。

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

sign_algorithm

String

签名算法。默认值为空,仅aes类型签名密钥支持选择签名算法,其他类型签名密钥不支持签名算法。

响应参数

状态码: 201

表4 响应Body参数

参数

参数类型

描述

name

String

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

说明:

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

最小长度:3

最大长度:64

sign_type

String

签名密钥类型:

  • hmac

  • basic

  • public_key

  • aes

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

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

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

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:支持英文,数字,下划线,中划线,!,@,#,$,%,+,/,=,可以英文字母,数字,+,/开头,16 ~ 2048字符。未填写时后台自动生成。

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

sign_algorithm

String

签名算法。默认值为空,仅aes类型签名密钥支持选择签名算法,其他类型签名密钥不支持签名算法。

update_time

String

更新时间

create_time

String

创建时间

id

String

签名密钥的编号

状态码: 400

表5 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 401

表6 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 403

表7 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 404

表8 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 412

表9 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 500

表10 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

请求示例

创建一个签名密钥并设置key和secret

{
  "name" : "signature_demo",
  "sign_key" : "signkeysignkey",
  "sign_secret" : "sig************ret"
}

响应示例

状态码: 201

Created

{
  "sign_secret" : "sig************ret",
  "update_time" : "2020-08-03T03:39:38.119032888Z",
  "create_time" : "2020-08-03T03:39:38.119032659Z",
  "name" : "signature_demo",
  "id" : "0b0e8f456b8742218af75f945307173c",
  "sign_key" : "signkeysignkey",
  "sign_type" : "hmac"
}

状态码: 400

Bad Request

{
  "error_code" : "APIG.2011",
  "error_msg" : "Invalid parameter value,parameterName:name. 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.3030",
  "error_msg" : "The instance does not exist;id:f0fa1789-3b76-433b-a787-9892951c620ec"
}

状态码: 412

PreconditionFailed

{
  "error_code" : "APIG.3548",
  "error_msg" : "sign_type=public_key not supported by instance 6a29d4e9-69a0-412a-aabe-9898ec0903b0"
}

状态码: 500

Internal Server Error

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

状态码

状态码

描述

201

Created

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

PreconditionFailed

500

Internal Server Error

错误码

请参见错误码

相关文档