安全 Webhook
一旦你的服务器准备好接收 Webhook 请求,你可能希望确保它能够安全地处理这些请求。 Logto 为每个 Webhook 请求负载生成一个签名,这使你能够验证请求是否来自日志 (Logto)。
获取签名密钥
你需要从 管理控制台 的 Webhook 详情页面获取签名密钥,以验证签名。
验证签名
从 Webhook 请求的 logto-signature-sha-256
头中提取签名。
之后,你应该使用你的签名密钥和 Webhook 请求体生成一个签名,并确保结果与 Logto 的签名匹配。
备注
使用 Webhook 请求的原始主体进行签名生成;避免使用解析后的主体,因为服务器可能会在到达你的 Webhook 端点处理程序之前对其进行预处理。
Logto 使用 HMAC 十六进制摘要来计算签名。
以下是在 Node.js 中验证签名的示例:
import { createHmac } from 'node:crypto';
export const verify = (signingKey: string, rawBody: Buffer[], expectedSignature: string) => {
const hmac = createHmac('sha256', signingKey);
hmac.update(rawBody);
const signature = hmac.digest('hex');
return signature === expectedSignature;
};