跳到主要内容

安全 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;
};