开发者文档
验证 API 渠道签名
使用原始请求字节、Unix 时间戳和 HMAC-SHA256 验证双向请求。
更新于 2026-07-24适合: 后端开发者 · 安全负责人
签名原文固定为:
{timestamp}.{rawBody}
请求头:
X-NavoChat-Timestamp: 1784196000
X-NavoChat-Signature: v1=<hex hmac sha256>
Node.js
import crypto from "node:crypto";
const body = Buffer.from(JSON.stringify(payload));
const timestamp = Math.floor(Date.now() / 1000).toString();
const signature = crypto
.createHmac("sha256", process.env.NAVOCHAT_SIGNING_SECRET)
.update(Buffer.concat([Buffer.from(`${timestamp}.`), body]))
.digest("hex");
Python
import hashlib
import hmac
import time
timestamp = str(int(time.time()))
signature = hmac.new(
secret.encode(),
timestamp.encode() + b"." + raw_body,
hashlib.sha256,
).hexdigest()
验签要求
- 必须使用接收到的原始 Body 字节,不能重新序列化 JSON。
- 时间偏差不得超过五分钟。
- 使用恒定时间比较签名值。
- 先验签,再解析或处理业务数据。
- Callback 和入站请求使用同一密钥与算法。