签名机制

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

查看PDF

为保证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

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈