假设A开发了一系列API,要求调用这些API的调用者对调用参数进行签名,然后A在后台对每个请求的签名进行验证。假设B要调用这些API,首先需要将参数序列化为json,然后对jsonstring进行md5算法运算,得到签名sigA收到B调用api的request,取出参数,记性呢md5运算,然后和sig对比。但是A取出的参数jsonstring需要和B当时得到的一致。可是由于json序列化可能导致json各kv对的顺序变化,这种一致性就难以保证。另一种方法是从request请求中将字节读出来,直接用md5对字节流进行运算处理。不过这样的话,一般这个动作发生在interceptor中,字节读出来后怎么放回去让接下来的Controller读到参数呢?这又是问题。
2 回答
RISEBY
TA贡献1856条经验 获得超5个赞
1、一般是根据参数名称的ASCII码表的顺序排序,将排序好的参数名和参数值拼装在一起,然后使用MD5或者HMAC算法来签名sign2、字节读出来后怎么放回去?-->如果是使用springmvc的话,用ContentCachingRequestWrapper就可以
添加回答
举报
0/150
提交
取消