您的应用服务器访问认证服务器申请和管理 Token 时,需要将请求参数按照指定方式排序拼接,组织成待签名字符串,然后使用秘钥 secretKey 加密得到签名。
具体约束规则如下:
- 参数对使用 key=value 格式;
- 参数对之间使用“&”分隔;
- 参数对内部,即同名参数,使用逗号“,”分隔;
- 计算签名时,需要将参数对按照 key 的字典序排序,参数对内部,也需要使用字典序排序。
示例
比如原始请求的 HTTP 方法是:
- [backcolor=transparent]https[backcolor=transparent]:[backcolor=transparent]//mqauth.aliyuncs.com/token/apply
参数列表有:
- [backcolor=transparent]parama[backcolor=transparent]=[backcolor=transparent]a
- [backcolor=transparent]paramc[backcolor=transparent]=[backcolor=transparent]c2[backcolor=transparent],[backcolor=transparent]c1
- [backcolor=transparent]paramb[backcolor=transparent]=[backcolor=transparent]b2[backcolor=transparent],[backcolor=transparent]b1[backcolor=transparent],[backcolor=transparent]b3
那么先将参数按照 key 排序,得到:
- [backcolor=transparent]parama[backcolor=transparent]=[backcolor=transparent]a
- [backcolor=transparent]paramb[backcolor=transparent]=[backcolor=transparent]b2[backcolor=transparent],[backcolor=transparent]b1[backcolor=transparent],[backcolor=transparent]b3
- [backcolor=transparent]paramc[backcolor=transparent]=[backcolor=transparent]c2[backcolor=transparent],[backcolor=transparent]c1
再将同一参数内的值也按照字典序排序,参数内部用逗号分隔,得到:
- [backcolor=transparent]parama[backcolor=transparent]=[backcolor=transparent]a
- [backcolor=transparent]paramb[backcolor=transparent]=[backcolor=transparent]b1[backcolor=transparent],[backcolor=transparent]b2[backcolor=transparent],[backcolor=transparent]b3
- [backcolor=transparent]paramc[backcolor=transparent]=[backcolor=transparent]c1[backcolor=transparent],[backcolor=transparent]c2
最终拼接得到待签名字符串:
- [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。