接口签名

因为使用了鉴权路由,外部系统或前台使用接口时需要对请求数据进行签名。

请求头

请求需要签名的接口时需要附加以下 headers 参数:

Content-Date required string
当前时间戳,精确到秒
AccessKey required string
授权 id,通过后台添加
Content-MD5 required string
签名结果

签名内容

签名使用 HMAC-SHA256 算法进行计算,需要使用以下字符串:

url 路径 required string
不包含域名与参数。形式如:\api\path
url 参数 required string
url query 参数。将参数按照参数名的 ASCII 码从小到大排序,每个参数的键值对用 = 连接,不同参数之间用 & 连接,并进行 URL encode。形式如:id=1&type=2
时间戳 required string
当前时间的时间戳与 HTTP Header 中的 Content-Date 头一致。形式如:1676178239

将以上生成的原始字符串按照如下格式进行拼接:

urlPath + \n(换行符)
urlQuery + \n(换行符)
timestamp

签名计算

将签名字符串进行 HMAC-SHA256 算法计算,使用 SecretKey 作为密钥 (后台添加授权时生成)。将结果转换为十六进制字符串,即为签名结果。计算方法如下:

sign = hmac_sha1(signingStr, "<SecretKey>")

签名示例

以下是一个示例签名字符串:

\api\path
id=1&type=2
1676178239

示例中的 SecretKey12345678, 计算签名结果如下:

d6d41cf9cae4ebd5edec4ae11844e0970e1d545c2318784b6a079079ab25c997