阿里的 API 网关,就是在 HEADER 里面加了两个参数:X-Ca-Timestamp、X-Ca-Nonce。
这个解决方案就是我们前面说的时间戳加随机串。
接着看看它的签名生成过程。
首先是客户端生成签名,三步:
- 1.从原始请求中提取关键数据,得到一个用来签名的字符串
- 2.使用加密算法加APP Secret对关键数据签名串进行加密处理,得到签名
- 3.将签名所相关的所有头加入到原始HTTP请求中,得到最终HTTP请求
一图胜千言:
然后是服务端验证签名,四步:
- 1.从接收到的请求中提取关键数据,得到一个用来签名的字符串
- 2.从接收到的请求中读取APP Key,通过APP Key查询到对应的APP Secret
- 3.使用加密算法和APP Secret对关键数据签名串进行加密处理,得到签名
- 4.从接收到的请求中读取客户端签名,对比服务器端签名和客户端签名的一致性。
而具体的签名算法其实和微信支付,大同小异,主要也是对于参与签名的字段按照字典序排序。
个中差异就不进行对比说明了,有兴趣的朋友可以自己看一下。
最后说一句
好了,看到了这里点个赞吧,周更很累的,需要一点正反馈。
才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以在留言区提出来,我对其加以修改。
感谢您的阅读,我坚持原创,十分欢迎并感谢您的关注。