Seguridad
Lineamientos de seguridad para la integración entre su CRM y Spot2 Ingestion.
Canales
La integración usa dos canales:
- Pull: nosotros consultamos su API para obtener propiedades.
- Webhook (opcional): usted recibe notificaciones nuestras sobre el resultado.
Cada canal tiene su propio mecanismo de autenticación.
Pull (autenticación de nuestra consulta a su API)
Métodos soportados
| Método | Implementación |
|---|---|
| API Key | Header x-api-key. Usted nos proporciona una clave y la enviamos en cada request. |
| Bearer Token | Header Authorization: Bearer <token>. |
| Header personalizado | El nombre y valor que defina. |
Recomendaciones
- Clave dedicada: cree una clave exclusiva para Spot2. No reutilice claves de otras integraciones.
- Alcance mínimo: solo lectura sobre el endpoint de propiedades. No necesita permisos de escritura ni acceso a otros recursos.
- Sin expiración automática: la clave no debe expirar por tiempo. Si necesita rotarla, coordine una ventana de transición.
- Rate limiting por clave: si su API tiene rate limits, configure el límite por clave (no global) para que otras integraciones no nos afecten.
Webhook (autenticación de nuestra notificación a su endpoint)
HMAC-SHA256
Cada webhook que enviamos incluye una firma HMAC-SHA256 para que pueda verificar autenticidad e integridad.
Header:
X-Signature: sha256=<hash>
Algoritmo:
- Entrada: el cuerpo crudo del request (bytes, sin parsear).
- Clave: el secreto compartido (
feedback_secret). - Función: HMAC-SHA256.
- Salida: hash en hexadecimal, prefijado con
sha256=.
Verificación (pasos conceptuales):
- Extraiga el valor del header
X-Signature. - Calcule HMAC-SHA256 del cuerpo crudo con su secreto.
- Formatee el hash como
sha256=<hex>. - Compare ambos strings usando comparación de tiempo constante (timing-safe).
- Si coinciden: procese el webhook. Si no: responda 401 y descarte.
Rotación del secreto
Procedimiento para rotar el feedback_secret sin downtime:
- Avísenos con anticipación.
- Configuramos ambos secretos (anterior y nuevo) de nuestro lado.
- Durante la ventana de transición (típicamente 24 horas), enviamos webhooks firmados con uno de los dos secretos.
- Su endpoint debe aceptar cualquiera de los dos durante ese periodo.
- Al terminar la ventana, eliminamos el secreto anterior y usamos solo el nuevo.
Transporte
- TLS: mínimo 1.2. Preferentemente 1.3.
- HTTPS: obligatorio para ambos canales (pull y webhook).
- Certificados: deben ser válidos, no expirados, emitidos por una CA reconocida.
Rate limits
Por defecto, hacemos máximo 60 requests por minuto a su API.