开发者社区> 问答> 正文

签名机制说明都讲了什么?


您的应用服务器访问认证服务器申请和管理 Token 时,需要将请求参数按照指定方式排序拼接,组织成待签名字符串,然后使用秘钥 secretKey 加密得到签名。
具体约束规则如下:

  • 参数对使用 key=value 格式;
  • 参数对之间使用“&”分隔;
  • 参数对内部,即同名参数,使用逗号“,”分隔;
  • 计算签名时,需要将参数对按照 key 的字典序排序,参数对内部,也需要使用字典序排序。


示例


比如原始请求的 HTTP 方法是:
  1. [backcolor=transparent]https[backcolor=transparent]:[backcolor=transparent]//mqauth.aliyuncs.com/token/apply

参数列表有:
  1. [backcolor=transparent]parama[backcolor=transparent]=[backcolor=transparent]a
  2. [backcolor=transparent]paramc[backcolor=transparent]=[backcolor=transparent]c2[backcolor=transparent],[backcolor=transparent]c1
  3. [backcolor=transparent]paramb[backcolor=transparent]=[backcolor=transparent]b2[backcolor=transparent],[backcolor=transparent]b1[backcolor=transparent],[backcolor=transparent]b3

那么先将参数按照 key 排序,得到:
  1. [backcolor=transparent]parama[backcolor=transparent]=[backcolor=transparent]a
  2. [backcolor=transparent]paramb[backcolor=transparent]=[backcolor=transparent]b2[backcolor=transparent],[backcolor=transparent]b1[backcolor=transparent],[backcolor=transparent]b3
  3. [backcolor=transparent]paramc[backcolor=transparent]=[backcolor=transparent]c2[backcolor=transparent],[backcolor=transparent]c1

再将同一参数内的值也按照字典序排序,参数内部用逗号分隔,得到:
  1. [backcolor=transparent]parama[backcolor=transparent]=[backcolor=transparent]a
  2. [backcolor=transparent]paramb[backcolor=transparent]=[backcolor=transparent]b1[backcolor=transparent],[backcolor=transparent]b2[backcolor=transparent],[backcolor=transparent]b3
  3. [backcolor=transparent]paramc[backcolor=transparent]=[backcolor=transparent]c1[backcolor=transparent],[backcolor=transparent]c2

最终拼接得到待签名字符串:
  1. [backcolor=transparent]parama[backcolor=transparent]=[backcolor=transparent]a[backcolor=transparent]&[backcolor=transparent]paramb[backcolor=transparent]=[backcolor=transparent]b1[backcolor=transparent],[backcolor=transparent]b2[backcolor=transparent],[backcolor=transparent]b3[backcolor=transparent]&[backcolor=transparent]paramc[backcolor=transparent]=[backcolor=transparent]c1[backcolor=transparent],[backcolor=transparent]c2

然后使用 secretKey 作为密钥,HmacSHA1 算法计算得到签名。
[backcolor=transparent]注意:
  • HTTP 管理 Token 时,可以选用 HTTP 或者 HTTPS,应用自行选择。
  • HTTP 方法可以选择 GET 或者 POST,建议生产环境使用 POST,测试环境可以使用 GET。

展开
收起
猫饭先生 2017-10-27 10:40:58 1480 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载