为了保证应用和校内REST服务器之间通信的安全,避免出现apiKey被盗用的情况,充分保证应用的权利,平台加入签名认证机制。由于secretKey只有平台和应用双方知道,唯一而且不公开,所以将当前请求和开发者申请应用分配的SecretKey进行MD5 HASH生成sig。
加入签名认证后,应用需要在此请求基础上增加sig参数,具体生成签名的规则为:
注意:只在计算sig的时候不需要对任何参数进行urlEncode(发送请求的时候还是需要urlEncode),所有的value均为utf-8
1.在未加入签名认证之前开发者向校内REST服务器POST下面的请求详细信息为(以users.getLoggedInUser为例):
v=1.0&api_key=ec9e57913c5b42b282ab7b743559e1b0&method=xiaonei.users.getLoggedInUser&call_id=1232095295656& session_key=L6Xe8dXVGISZ17LJy7GzZaeYGpeGfeNdqEPLNUtCJfxPCxCRLWT83x+s/Ur94PqP-700001044
2.经过第一步示例中request的参数串就变为:
api_key=ec9e57913c5b42b282ab7b743559e1b0&call_id=1232095295656&method=xiaonei.users.getLoggedInUser& session_key=L6Xe8dXVGISZ17LJy7GzZaeYGpeGfeNdqEPLNUtCJfxPCxCRLWT83x+s/Ur94PqP-700001044&v=1.0
3.经过第二步示例中request的参数串就变为:
api_key=ec9e57913c5b42b282ab7b743559e1b0call_id=1232095295656method=xiaonei.users.getLoggedInUser session_key=L6Xe8dXVGISZ17LJy7GzZaeYGpeGfeNdqEPLNUtCJfxPCxCRLWT83x+s/Ur94PqP-700001044v=1.0
4.示例中的应用secretKey为7fbf9791036749cb82e74efd62e9eb38,则经过第三步示例中request的参数串变为:
api_key=ec9e57913c5b42b282ab7b743559e1b0call_id=1232095295656method=xiaonei.users.getLoggedInUser session_key=L6Xe8dXVGISZ17LJy7GzZaeYGpeGfeNdqEPLNUtCJfxPCxCRLWT83x+s/Ur94PqP-700001044v=1.0 7fbf9791036749cb82e74efd62e9eb38
5.经过第四步示例中生成的MD5值为:66f332c08191b8a5dd3477d36f3af49f,则应用向REST服务器最终POST的请求为:
v=1.0&api_key=ec9e57913c5b42b282ab7b743559e1b0&method=xiaonei.users.getLoggedInUser& call_id=1232095295656&session_key=L6Xe8dXVGISZ17LJy7GzZaeYGpeGfeNdqEPLNUtCJfxPCxCRLWT83x+s/Ur94PqP-700001044 &sig=66f332c08191b8a5dd3477d36f3af49f