跳到主要内容

签名说明

由于 JU 需要为第三方平台提供一些开放性的接口,所以需要接口的数据安全问题,比如数据是否被篡改,数据是否已过时,数据是否可以重复提交,接口在某个时间内访问频率等问题。其中数据是否被篡改是最重要的。

1、线下分配 appkey 和 secretkey,针对不同的调用,提供不同的 appkey 和 secretkey

2、加入 timestamp(时间戳),其值应当是请求发送时刻的 unix 时间戳(毫秒),数据的有郊时间根据此值来计算。

3、加入 signature(数据签名),所有数据的签名信息。

4、加入 recvwindow(自定义请求有效时间),有效时间目前相对简单统一固定为某个值,比如:同 api 同 appid 下 10 分钟内数据都有郊,此处可以再进步优化到具体单个 api 有效时间都不相同。

服务器收到请求时会判断请求中的时间戳,最长 60 秒,默认为 5 秒,如果是 5000 毫秒之前发出的,则请求会被认为无效。这个时间窗口值可以通过发送可选参数 recvWindow 来自定义。 另外,如果服务器计算得出客户端时间戳在服务器时间的‘未来’一秒以上,也会拒绝请求。 关于交易时效性 互联网状况并不 100%可靠,不可完全依赖,因此你的程序本地到 JU 服务器的时延会有抖动. 这是我们设置 recvWindow 的目的所在,如果你从事高频交易,对交易时效性有较高的要求,可以灵活设置 recvWindow 以达到你的要求。

不推荐使用 5 秒以上的 recvWindow

5、加入 algorithms (签名方法/算法),用户计算签名是基于哈希的协议,此处默认使用 HmacSHA256。具体支持那些协议,请参见下面表格中所列出

字段名是否必须示例说明
validate-appkeytruedbefbc809e3e83c283a984c3a1459732ea7db1360ca80c5c2c8867408d28cc83
validate-timestamptrue1641446237201
validate-signaturetrue0a7d0b5e802eb5e52ac0cfcd6311b0faba6e2503a9a8d1e2364b38617877574d
validate-recvwindowfalse5000(millisecond)
validate-algorithmsfalseHmacSHA256HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512,默认为:HmacSHA256
api-versionfalse1.0Reserved, API version number
validate-signversionfalse1.0Reserved, signature version number