Ir al contenido

Webhook signatures

Qué vas a lograr: validar que un Stitch viene de Tsuzuro y no es un replay.

Tsuzuro-Signature: t=1700000000,v1=<hex_hmac>
${timestamp}.${rawBody}
import { stitches } from "@tsuzuro/sdk";
const parsed = await stitches.parse(req, {
secret: process.env.TSUZURO_WEBHOOK_SECRET!
});
console.log(parsed.payload);
import { verifyWebhookSignature } from "@tsuzuro/sdk";
const ok = verifyWebhookSignature({
secret: process.env.TSUZURO_WEBHOOK_SECRET!,
header: req.headers.get("Tsuzuro-Signature")!,
payload: rawBody
});

La tolerancia default contra replay es 300 segundos.