欢迎来到人人网开放平台 人人网首页
登录/创建账户

为了保证应用和校内REST服务器之间通信的安全,避免出现apiKey被盗用的情况,充分保证应用的权利,平台加入签名认证机制。由于secretKey只有平台和应用双方知道,唯一而且不公开,所以将当前请求和开发者申请应用分配的SecretKey进行MD5 HASH生成sig。

[编辑] 生成签名规则

加入签名认证后,应用需要在此请求基础上增加sig参数,具体生成签名的规则为:

  • 将请求中所有参数进行排序,排序为字典序;
  • 将排序好的参数进行转换,去掉"&",例如:k1=v1&k2=v2&k3=v3变为k1=v1k2=v2k3=v3;
  • 在上述转换后的串末尾追加上应用的secret_key;
  • 用MD5算出上述串的MD5值,然后作为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