签名规范
签名口径是第三方对接最容易扯皮的地方,这里逐字节写死。
待签串(canonical)
METHOD统一大写;PATH是不带 query 的路径(如/openapi/v1/detect)。BODY为空时按空串求 SHA256(结果固定为e3b0c442...b855)。- 请求头:
X-App-Key/X-Timestamp(毫秒)/X-Nonce(随机串)/X-Signature。 - 时间窗 ±5 分钟;
nonce在 10 分钟内不可重复,重复即按重放拒绝(40103)。
text
METHOD + "\n" + PATH + "\n" + TIMESTAMP + "\n" + NONCE + "\n" + SHA256_HEX(BODY)
signature = Base64( HMAC-SHA256( canonical, appSecret ) )固定测试向量
下面这条向量在平台测试中逐字节固定,可直接用于你的 SDK 自测。
| 项 | 值 |
|---|---|
| method | POST |
| path | /openapi/v1/detect |
| timestamp | 1800000000000 |
| nonce | abc123 |
| body | {"cameraId":7,"algorithms":["INTRUSION"]} |
| appSecret | jqvision-openapi-test-secret |
| body sha256 | cedcce369d67c5501f346b17adc8b66d3ba419f0e75d973b969dfd06e1cae669 |
| signature | nEE0SjT7OYuVjeeojowJ1NNhB427ObEGG1VErdlLyd4= |
回调(Webhook)签名
回调会禁止跟随重定向、限制超时与响应体大小;投递失败会按指数退避重试(默认最多 5 次),控制台可查看投递日志与手动重放。
text
canonical = TIMESTAMP + "\n" + BODY
signature = Base64( HMAC-SHA256( canonical, 订阅 secret ) )
请求头:X-Jq-Timestamp / X-Jq-Signature