方案概览
提前参数准备
参数名 | 说明 | 来源 |
---|---|---|
token | 租户(公司)的授权Key | 租户激活2-Legged app后生成,需要找租户提供 |
tokenSecret | 租户(公司)授权秘钥 | 租户激活2-Legged app后生成,需要找租户提供 |
- 相关算法说明
简写 | 名称 | 说明 |
---|---|---|
url.encode | URL编码 | 可将字符串以URL编码 |
url.decode | URL解码 | 本函数对字符串进行URL解码 |
base64.encode | base64编码 | Base64就是一种基于64个可打印字符来表示二进制数据的方法 |
base64.decode | base64解码 | Base64就是一种基于64个可打印字符来表示二进制数据的方法 |
HmacSHA256 |
目的
访问 GET https://some-app.kingxunlian.com/some-path/get
需要准备的参数如下:
参数key | value | value例子 | 说明 |
---|---|---|---|
token | url.encode(token) | 租户(公司)授权的Key标记 | |
signature_method | HMAC-SHA256 | HMAC-SHA256 | 签名方法,暂只支持HMAC-SHA256,必须为”HMAC-SHA256” |
timestamp | url.encode(“时间戳”) | 1554281731 | 时间戳(秒) |
nonce | url.encode(“随机字符串”) | 单次值,随机生成32位字符串,防止重放攻击(每次请求必须不同) | |
signature | 待生成 | 待生成 |
方法
一、获取签名
- 第一步:构造待签名源串 A.
Step1:
获取请求方法,得到Step1结果 —— GET
Step2:
将请求的URI路径进行URL编码,得到Step2结果
https%3a%2f%2fsome-app.kingxunlian.com%2fsome-path%2fget
Step3:
将除“signature”外的所有参数按下面顺序排列:
token,signature_method,timestamp,nonce
排序后的参数(key=value)用&拼接起来,并进行URL编码,得到Step3结果
Step4:
将Step1 + “&” + Step2 + “&” +Step3,得到Step4以及第一步结果,即待签名字符串
- 第二步:构造秘钥 B
将 url.encode(tokenSecret) ,得到第二步结果,秘钥
- 第三步:生成签名值
使用HMAC-SHA256加密算法,将第一步中的到的源串A以及第二步中得到的密钥B进行加密。
然后将加密后的字符串经过Base64编码,即得到signature签名参数的值。
二、构造请求
可得下列参数
token
signature_method
timestamp
nonce
signature
将上述参数(key=”value”)并用逗号,拼接起来,并在前面增加”XL_AUTH “,可获得字符串
注意:注意引号、空格…
将此字符串写入请求Header的Authorization中即可完成.
文档更新时间: 2019-07-12 17:05 作者:admin