Configuración
Rotación de keys JWT
Cómo se rotan las claves RS256 que firman los JWT de SIVO y los callouts a Salesforce SCRT2.
Tipos de claves JWT en SIVO
| Clave | Algoritmo | Uso | Quién la gestiona |
|---|---|---|---|
sivo_user_jwt_key | HS256 (secret) | Firma de tokens emitidos por /api/auth/login | SIVO (rotación trimestral) |
sivo_scrt2_jwt_key | RS256 (keypair) | Firma de JWT enviados a Salesforce SCRT2 | SIVO (global) + opcional override por org |
JWT de usuario (HS256)
Secret compartido entre backend y verificador. Rotación automática:
- Cada 90 días SIVO genera nuevo secret.
- Periodo de gracia: durante 24h ambos secrets son válidos (los tokens antiguos siguen verificándose).
- Tras las 24h, secret antiguo invalidado. Sesiones que no se hayan renovado quedan expiradas (login otra vez).
JWT para Salesforce SCRT2 (RS256)
Para llamar a SCRT2 (POST /voiceCalls, push de mensajes, etc.) SIVO firma un JWT con RS256:
{
"iss": "<scrt2_audience>",
"sub": "<sf_user_id>",
"aud": "<scrt_base_url>",
"iat": ...,
"exp": ...
}
La verificación la hace Salesforce usando la clave pública que configura el LWC calltreeSetup automáticamente al conectar.
Modo global (default)
Por defecto, todos los tenants de SIVO comparten un único keypair RS256 mantenido por SIVO. Ventajas:
- Rotación centralizada (SIVO).
- Tu admin SF no tiene que hacer nada en cada rotación.
- Cero configuración tras OAuth.
Modo per-org (Enterprise opcional)
Si tu compliance requiere clave dedicada por org SF, puedes activar:
Settings → Salesforce → Connected orgs → tu org → "Use dedicated keypair"
SIVO genera un keypair RS256 nuevo para esa org. Tu admin SF configura la clave pública correspondiente en su External Client App.
Trade-off:
- ✓ Aislamiento criptográfico por org.
- ✗ La rotación requiere coordinación con el admin SF (re-uploaded de la clave pública).
Cómo rotar manualmente (Enterprise)
Si necesitas forzar rotación inmediata (sospecha de filtración, política trimestral interna):
- Settings → Salesforce → tu org → “Rotate keypair”.
- SIVO genera nuevo keypair, mantiene el viejo 24h en modo dual-verify.
- Descarga la clave pública nueva en formato JWK.
- Tu admin SF la sube al External Client App.
- Tras las 24h, el keypair antiguo queda invalidado.
Si fallas el paso 4 dentro de las 24h, los nuevos JWT no se verificarán en SF y las llamadas no pushearán a VoiceCall. SIVO te avisa por email a tu admin principal.
Runbook técnico (internal)
El runbook de rotación interna del keypair global está en el repo del backend (docs/maintenance/rotate-scrt2-jwt-keypair.md). Se ejecuta:
- Cada 6 meses como política.
- Inmediatamente si hay sospecha de exposición.
- Cuando un cliente Enterprise migra de global a dedicated.
Soporte
Para activar modo dedicated o cualquier consulta sobre rotación: [email protected] (Enterprise: tu CSM directo).