Dónde configurar
En la Consola, abre Webhooks en el workspace. Los webhooks requieren un administrador de workspace (los administradores de plataforma también tienen acceso).
| Campo | Finalidad |
|---|---|
| Nombre | Identifica el destino en la Consola y en el registro de auditoría |
| URL | Endpoint HTTPS que recibe el evento |
| Método | Método HTTP para la entrega (POST) |
| Content type | Formato aceptado por el destino |
| Eventos | Qué eventos disparan la entrega |
| Headers | Encabezados fijos, incluidos los tokens del destino cuando sea necesario |
| HMAC | Firma que el destino usa para verificar la autenticidad |
| Body template | Payload personalizado cuando el destino requiere un formato específico |
| Ignore SSL Verification | Omite la validación del certificado TLS para el endpoint de destino |
HMAC
Cuando HMAC está habilitado, Acrity firma el payload enviado al destino con un secreto compartido. El destino debe recalcular la firma con el mismo secreto y rechazar los mensajes que no coincidan. Buenas prácticas:- Usa un secreto largo, aleatorio y único por webhook.
- Almacena el secreto en el cofre del sistema receptor.
- Valida la firma antes de procesar el evento.
- Rechaza las solicitudes sin HTTPS en producción.
- Rota el secreto cuando se sospeche de una exposición.
Verificar la firma
Cuando HMAC está habilitado, Acrity firma cada entrega saliente y envía la firma en un header. Vuelve a calcular la firma de tu lado y compárala con el header antes de procesar el payload. Cada entrega incluye estos headers:| Header | Descripción |
|---|---|
X-ACR-Signature-256 | Firma en el formato sha256=<lowercase hex> |
X-ACR-Event | Tipo de evento de la entrega |
X-ACR-Delivery | ID único de la entrega |
sha256= seguido del digest hexadecimal en minúsculas de un HMAC-SHA256 calculado sobre el cuerpo sin procesar (raw) de la solicitud usando el secreto del webhook.
Para verificar una entrega:
- Lee el cuerpo sin procesar (raw) de la solicitud exactamente como se recibió. No lo vuelvas a serializar ni a reformatear.
- Calcula HMAC-SHA256 sobre el cuerpo sin procesar usando el secreto del webhook.
- Formatea el resultado como
sha256=seguido del digest hexadecimal en minúsculas. - Compara tu valor con
X-ACR-Signature-256usando una comparación de tiempo constante. - Rechaza la solicitud si los valores no coinciden.
Protección contra reenvío (replay)
Acrity no agrega protección contra reenvío basada en marca de tiempo a las entregas salientes, y la firma por sí sola no evita que una solicitud capturada sea reenviada. Deduplica por el IDX-ACR-Delivery: registra los IDs que ya has procesado e ignora las repeticiones.
Verificación entrante
Para los webhooks entrantes de VCS, Acrity verifica la firma del webhook del proveedor antes de procesar el evento, por lo que las entregas que no superan la validación de firma se rechazan. Esto ocurre automáticamente y no requiere configuración.Headers secretos
Los headers marcados como secretos se tratan como secretos en la Consola. Al editar, deja el valor en blanco para mantener el secreto guardado, o introduce un nuevo valor para reemplazarlo.Pruebas y entregas
Usa la prueba del webhook para validar:- Conectividad con la URL.
- Formato del payload.
- Headers obligatorios.
- Validación de HMAC en el receptor.
- Códigos de respuesta del destino.
Rotación
Para rotar un secreto HMAC:Crear un nuevo secreto en el receptor
Configura el nuevo secreto en el sistema que recibe el webhook.