Validating Webhook Requests with Secrets
Validating Webhook Requests
{
'X-RB-Signature-256': '{hash signature}'
}Example Code
import * as crypto from "crypto";
const WEBHOOK_SECRET: string = process.env.WEBHOOK_SECRET;
const verify_signature = (req: Request) => {
const signature = crypto
.createHmac("sha256", WEBHOOK_SECRET)
.update(JSON.stringify(req.body))
.digest("hex");
const trusted = Buffer.from(signature, 'ascii');
const untrusted = Buffer.from(req.headers.get("x-rb-signature-256"), 'ascii');
return crypto.timingSafeEqual(trusted, untrusted);
};
const handleWebhook = (req: Request, res: Response) => {
if (!verify_signature(req)) {
res.status(401).send("Unauthorized");
return;
}
// Continue processing webhook request...
};Last updated
Was this helpful?