方案概览

提前参数准备

参数名 说明 来源
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) ,得到第二步结果,秘钥

  • 第三步:生成签名值
  1. 使用HMAC-SHA256加密算法,将第一步中的到的源串A以及第二步中得到的密钥B进行加密。

  2. 然后将加密后的字符串经过Base64编码,即得到signature签名参数的值。

二、构造请求
可得下列参数

token
signature_method
timestamp
nonce
signature
将上述参数(key=”value”)并用逗号,拼接起来,并在前面增加”XL_AUTH “,可获得字符串

注意:注意引号、空格…

将此字符串写入请求Header的Authorization中即可完成.

文档更新时间: 2019-07-12 17:05   作者:admin