Documentación Técnica

Verificación de Webhooks

Para garantizar la seguridad y autenticidad de los datos (Leads, Eventos) enviados a tus sistemas, KronoCloud firma criptográficamente cada petición Webhook (POST) que sale de nuestros servidores.

¿Cómo funciona la firma de seguridad?

Todas las peticiones salientes de KronoCloud incluirán un encabezado (header) llamado:

X-Krono-Signature: sha256=a3f9e2b1c4d7...

Este header contiene un hash HMAC SHA-256 generado a partir de:

  • El cuerpo (payload) de la petición en formato JSON crudo.
  • El Webhook Secret único de tu Organización (disponible en tu panel de Webhooks).

Recomendación de Implementación

Para verificar que la petición es legítima, tu servidor receptor debe seguir estos pasos:

1

Extraer el cuerpo de la petición (raw body).

2

Calcular el hash HMAC SHA-256 utilizando tu Webhook Secret.

3

Comparar tu resultado con el valor recibido en el header X-Krono-Signature.

Valores coinciden

El mensaje es auténtico. Procesa el Lead.

Valores NO coinciden

Rechaza con 401 Unauthorized. Posible suplantación.

Ejemplo de Verificación (Node.js)

verify-webhook.js
// Express.js example
const crypto = require('crypto');

function verifyKronoSignature(rawBody, signature, secret) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}

Nota de Seguridad

Asegúrate de que tu endpoint utilice siempre una conexión segura (HTTPS). KronoCloud rechazará el envío de datos de clientes a URLs HTTP sin cifrar.