Skip to main content
Todo 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.
O HMAC é calculado com o segredo do endpoint sobre o timestamp, um ponto, e o corpo cru:
Use o corpo cru, byte a byte, antes de qualquer parse. Reserializar o JSON muda os bytes e a conferência falha.

Como conferir

  1. Extraia t e v1 do header.
  2. Recuse se t estiver a mais de cinco minutos do relógio do seu servidor.
  3. Recalcule o HMAC sobre ${t}.${corpo cru} com o segredo do endpoint.
  4. Compare em tempo constante.

Pegar o corpo cru

No Express, declare 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 responder 2xx, 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:
A ordem de chegada não é garantida. Se a ordem importa, use occurred_at do corpo.

Outros headers

Rotacionar o segredo

Durante a rotação, aceite as duas assinaturas por uma janela curta e remova a antiga depois que as entregas em voo chegarem.

Próximo passo

Receptor completo

Uma POC com conferência, deduplicação e fila.