http body签名-j9九游会登录
基础接口http body签名
定义
云商店每次调用商家的接口时会根据一定规则对请求生成signature,并且将signature通过url params的方式添加到url上,商家在接收到请求后需要同样的规则对请求体进行重新计算signature,并且与云商店传递的signature相比较,完全相同即为校验通过,通过url params传递的参数有:
|
参数 |
取值 |
描述 |
|---|---|---|
|
signature |
string |
加密签名,通过一定的规则对请求进行签名产生的值。 |
|
timestamp |
long |
unix 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 |
|
nonce |
string |
随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御api重放攻击。 |
生成规则
- 对请求参数排序,根据参数名自然排序,例如,以字母a开头的参数名会排在以b开头的参数前面,如果首字母相同,将会对第二个字母进行排序,以此类推,直到字符串结束
- 获取规范请求字符串,规则:
canonicalrequest = accesskey nonce timestamp lowercase(hexencode(hmac_sha256 (requestpayload)))
3.根据规则对规范请求字符串,密钥取signature值,规则:
signature = hexencode(hmac_sha256(canonicalrequest))
举例
商家收到的调用请求数据示例如下:
curl -x post 'https://www.isvwebsite.com/saasproduce?signature=11c4cd6279191de931def5c51531dffa9d37969f4e356b8a3a6d8de4fb357a48×tamp=1680508066618&nonce=50d83fdecaed6ccd8ef597f2a577950527928ba287d04e6036e92b2806fd17da' -h 'accept:application/json' -h 'content-type:application/json;charset=utf8' -d'{"activity":"newinstance","businessid":"87b94795-0603-4e24-8ae5-69420d60e3c8","orderid":"cs2211181819b4lvs","orderlineid":"cs2211181819b4lvs-000001","testflag":"1"}'
联营kit接口http body签名
定义
云商店每次调用商家的接口时会根据一定规则对请求生成x-sign,并且将x-sign通过header params的方式添加到url上,商家在接收到请求后需要同样的规则对请求体进行重新计算x-sign,并且与云商店传递的x-sign相比较,完全相同即为校验通过,通过header params传递的参数有:
|
参数 |
取值 |
描述 |
|---|---|---|
|
x-sign |
string |
加密签名,通过一定的规则对请求进行签名产生的值。 |
|
x-timestamp |
string |
unix 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 |
|
x-nonce |
string |
随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御api重放攻击。 |
生成规则
- 对请求参数排序,根据参数名自然排序,例如,以字母a开头的参数名会排在以b开头的参数前面,如果首字母相同,将会对第二个字母进行排序,以此类推,直到字符串结束
- 根据规则对规范请求字符串,密钥取x-sign值,规则:
canonicalrequest = accesskey nonce timestamp requestpayload x-sign = hexencode(hmac_sha256(canonicalrequest))
举例
商家收到的调用数据示例如下:
请求示例:
post https://example.isv.com/produceapi/v2/tenantsync
content-type: application/json
x-sign:11c4cd6279191de931def5c51531dffa9d37969f4e356b8a3a6d8de4fb357a48
x-timestamp:1680508066618
x-nonce:50d83fdecaed6ccd8ef597f2a577950527928ba287d04e6036e92b2806fd17da
{"instanceid": "huaiweitest123456","orderid": "cs1906666666abcde","tenantid": "68cbc86****************880d92f36422fa0e","tenantcode": "huawei","name": "huaiweitest","domainname": "https://example.tenantaccount.com","flag": 1,"testflag": 0,"timestamp": "20220413093539534"}
响应示例:
http/1.1 200 ok
content-type: application/json
{
" resultcode": "000000",
" resultmsg": "success"
}
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨