Skip to main content

Por que verificar

Qualquer pessoa na internet pode fazer POST para o seu endpoint. A verificação de assinatura garante que o evento veio realmente do kycert e não foi adulterado em trânsito.

Como funciona

O kycert assina cada requisição com HMAC-SHA256 usando o seu segredo de webhook. A assinatura é enviada no header kycert-signature:

Onde encontrar o segredo

No dashboard kycert, vá em Integrações & API → Webhooks e copie o Webhook Secret (hex puro, sem prefixo — ex: a218fc6f3b...). Armazene como variável de ambiente — nunca em código.
O Webhook Secret é exibido apenas no momento da criação. Copie imediatamente. Se perdido, use Regenerar secret — isso invalida o secret anterior e requer atualização em todos os receptores.

Algoritmo de verificação

Comparar signature com v1 do header usando comparação de tempo constante. Tolerância de tempo: rejeitar eventos com timestamp mais antigo que 5 minutos (300 segundos) em relação ao relógio atual. Isso protege contra ataques de replay.
Use o valor t do header kycert-signature para a verificação de timestamp — o campo created no body pode diferir em ~2s e não deve ser usado na verificação de replay.

Exemplos de implementação

Uso em frameworks

Use o body raw, não parseado. Middlewares como express.json() transformam o body antes que você possa lê-lo como string — a assinatura vai falhar. Configure express.raw() ou equivalente antes de qualquer parser JSON.

Erros comuns