Saltar al contenido principal
Version: v1.0.0

Seguridad

Lineamientos de seguridad para la integración entre su CRM y Spot2 Ingestion.


Canales

La integración usa dos canales:

  1. Pull: nosotros consultamos su API para obtener propiedades.
  2. 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étodoImplementación
API KeyHeader x-api-key. Usted nos proporciona una clave y la enviamos en cada request.
Bearer TokenHeader Authorization: Bearer <token>.
Header personalizadoEl 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:

  1. Entrada: el cuerpo crudo del request (bytes, sin parsear).
  2. Clave: el secreto compartido (feedback_secret).
  3. Función: HMAC-SHA256.
  4. Salida: hash en hexadecimal, prefijado con sha256=.

Verificación (pasos conceptuales):

  1. Extraiga el valor del header X-Signature.
  2. Calcule HMAC-SHA256 del cuerpo crudo con su secreto.
  3. Formatee el hash como sha256=<hex>.
  4. Compare ambos strings usando comparación de tiempo constante (timing-safe).
  5. Si coinciden: procese el webhook. Si no: responda 401 y descarte.

Rotación del secreto

Procedimiento para rotar el feedback_secret sin downtime:

  1. Avísenos con anticipación.
  2. Configuramos ambos secretos (anterior y nuevo) de nuestro lado.
  3. Durante la ventana de transición (típicamente 24 horas), enviamos webhooks firmados con uno de los dos secretos.
  4. Su endpoint debe aceptar cualquiera de los dos durante ese periodo.
  5. 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.