传出 Webhooks 和 HMAC 签名
使用 HMAC-SHA256 加密签名在您自己的服务器上安全地接收来自 Aurabase 项目的实时事件。
8分钟 读取·级别 中间·修改于 2026年8月19日
该英文文本是根据法文原文自动生成的,尚未经过审查。
该页面已自动翻译。英文版具有权威性。
Aurabase 传出 Webhook 将系统事件广播到您的回调 URL(例如新用户注册、成功付款、表行更新)。
至少一次交付保证
发送的每个 Webhook 都包含一个唯一的事件标识符 event_id,允许您在服务器上实现幂等处理。
Aurabase 发出的每个 HTTP POST 请求都包含以下安全标头:
http-headerstext
POST /webhook HTTP/1.1
Host: api.votre-domaine.com
Content-Type: application/json
X-Aurabase-Event-Id: evt_01J8Y6Q9K3M7Z...
X-Aurabase-Signature: t=1724060000,v1=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
verify-webhook.tstypescript
import crypto from 'node:crypto'
export function verifyAurabaseWebhook(
rawBody: string, signatureHeader: string, secret: string)
const parts = Object.fromEntries(
signatureHeader.split(',').map(p => p.split('=')),
)
const { t: timestamp, v1: signature } = parts
// 1. 防止重放攻击(最多 5 分钟)
if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) {
return false
}
// 2.timestamp.rawBody上HMAC-SHA256的计算
const expected = crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + rawBody)
.digest('hex')
// 3. 恒定时间内的安全比较
return crypto.timingSafeEqual(
Buffer.from(signature), Buffer.from(expected)
)
}
如果您的服务器响应 HTTP 错误代码(4xx、5xx)或遇到超时(时间限制为 10 秒),Aurabase 会根据指数退避自动重试发送:
- 尝试 1:立即
- 尝试 2:15 秒后
- 尝试 3:1 分钟后
- 尝试 4:5 分钟后
- 尝试 5:30 分钟后
连续 5 次失败后,该事件将被放置在 Studio 的 死信队列 (DLQ) 中以供检查和手动重放。