全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

签名机制

最近更新时间:2020-07-09 15:53:36

为保证API的安全调用,在调用API时云市场会对每个API请求通过签名(signature)进行身份验证,防止内容在传递过程中被伪造或篡改。无论使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名信息。

假设accessKey=123, secretKey=abc

1)根据请求参数(公共参数和业务参数,不包含公共参数signature)构造规范化请求字符串CanonicalizedQueryString

如:

p1=1,p2=2,p3=3,p4=中 国 人-_.~123abc,accessKey=123,action=createInstance

**第一步:**请求参数排序。排序规则以参数名按照字典排序。

排序后结果为:

accessKey=123,action=createInstance,p1=1,p2=2,p3=3,p4=中 国 人-_.~123abc

*第二步:请求参数编码。使用UTF-8字符集对每个请求参数的*名称**参数****取值进行URL编码,URL编码规则如下:

对于字符AZ、az、09以及字符“-”、“_”、“.”和“”不编码。

对于其他字符编码成%XY的格式,其中XY是字符对应ASCII码的16进制。示例:半角双引号(")对应 %22。

在URLEncode后需对三种字符替换:加号(+)替换成 %20、星号(*)替换成 %2A、 %7E 替换回波浪号(~)

**第三步:**使用等号(=)连接编码后的请求参数和参数取值。

**第四步:**使用与号(&)连接编码后的参数,

得到规范化请求字符串CanonicalizedQueryString。

如:

accessKey=123&action=createInstance&p1=1&p2=2&p3=3&p4=%E4%B8%AD%20%E5%9B%BD%20%E4%BA%BA-_.~123abc

2)计算签名。

sign = hash_hmac(‘sha256’, CanonicalizedQueryString, secretKey)

计算签名时使用的key是accessKey对应的secretKey。

使用的哈希算法是:HMAC-SHA256。

签名样例:

9f3b8a2cdf5d99ccd2c93829706ac2bc55d7cacd994f9114c7f1d5bff7da5583

3)将签名值作为signature参数值添加到请求参数中。

如:

accessKey=123&action=createInstance&p1=1&p2=2&p3=2&p4=%E4%B8%AD%E5%9B%BD&signature=9f3b8a2cdf5d99ccd2c93829706ac2bc55d7cacd994f9114c7f1d5bff7da5583

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈