POST chega assinado. Confira a assinatura antes de confiar no corpo: sem isso, quem descobrir
a URL do seu endpoint consegue enviar um desfecho forjado.
Header
O HMAC é calculado com o segredo do endpoint sobre o timestamp, um ponto, e o corpo cru:
Como conferir
- Extraia
tev1do header. - Recuse se
testiver a mais de cinco minutos do relógio do seu servidor. - Recalcule o HMAC sobre
${t}.${corpo cru}com o segredo do endpoint. - Compare em tempo constante.
Pegar o corpo cru
express.raw() na própria rota. Um express.json() global antes dela consome
o corpo.
Retentativa e idempotência
Se o seu servidor não responder2xx, a entrega é tentada de novo em intervalos crescentes.
Depois disso a entrega é marcada como falha. O reenvio manual fica disponível na aba Webhooks da
integração e de cada verificação.
Uma entrega pode chegar duas vezes. Descarte a repetição pelo header
X-Legitimuz-Delivery:
occurred_at do corpo.
Outros headers
Trocar o segredo
Osigning_secret sai uma vez só, na criação do endpoint, e não há rotação: nem no dashboard, nem
na API. Trocar o segredo é criar um endpoint novo com a mesma URL e remover o antigo depois.
Enquanto os dois existirem, aceite as duas assinaturas.
Aceitar dois segredos durante a troca
LEGITIMUZ_WEBHOOK_SECRET_PREVIOUS e o endpoint antigo depois que as entregas em voo
chegarem. O passo a passo no dashboard está em
trocar o segredo de um endpoint.
Próximo passo
Receptor completo
Uma POC com conferência, deduplicação e fila.