请求认证说明
定义
云商店每次调用商家的接口时会根据一定规则对请求生成signature,并且将signature通过URL PARAMS的方式添加到URL上,商家在接收到请求后需要同样的规则对请求体进行重新计算signature,并且与云商店传递的signature相比较,完全相同即为校验通过,通过URL PARAMS传递的参数有:
参数 |
取值 |
描述 |
---|---|---|
signature |
String |
加密签名,通过一定的规则对请求进行签名产生的值。 |
timestamp |
L |
UNIX 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 |
nonce |
String |
随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御API重放攻击。 |
contentType |
String |
application/json |
生成规则
- 获取规范请求字符串,规则:
canonicalRequest = accessKey + nonce + timestamp + Lowercase(HexEncode(HMAC_SHA256 (accessKey,RequestPayload)))
- 根据规则对规范请求字符串,密钥取signature值,规则:
signature = HexEncode(HMAC_SHA256(accessKey,canonicalRequest))
accessKey(key值)获取请参考:获取key值
举例
商家收到的调用请求数据示例如下:
curl -X POST -H 'Content-Type: application/json' 'https://www.isvwebsite.com/Licenseproduce?signature=af71******a50189ffa81a95cc284379ebaa5eb61155c0××tamp=1666677988730&nonce=RLLUammMSInlrNWb' -- data'{\"activity\":\"newInstance\",\"businessId\":\"******\",\"orderId\":\"******\",\"orderLineId\":\"******\",\"testFlag\":\"0\"}'