con Refresh Tokens
NutriFlow SaaS opera actualmente con un sistema de autenticación basado en sesiones Django almacenadas en PostgreSQL. Este sistema ha funcionado de forma fiable para nuestra interfaz web: 800 clínicas activas, con un SLA de 99.9% mantenido durante los últimos 14 meses.
La decisión no es si migrar, sino cómo hacerlo minimizando la disrupción para las 800 clínicas en producción y garantizando el cumplimiento del RGPD y la LOPD-GDD, dado que procesamos datos de salud de pacientes (categoría especial, Art. 9 RGPD).
Este documento recoge el análisis, la decisión y el plan de implementación para que todo el equipo de ingeniería tenga el contexto completo y pueda ejecutar la migración con autonomía.
| Opción | Descripción | Decisión | Razón principal |
|---|---|---|---|
| OAuth externo (Auth0, Cognito) | Delegar autenticación a proveedor SaaS | Descartada | Dependencia de tercero para datos sanitarios; coste mensual en escala; latencia adicional; riesgo de cumplimiento RGPD por transferencia internacional |
| Mantener sesiones + proxy móvil | Añadir capa de traducción para app móvil | Descartada | Deuda técnica inaceptable: duplica la superficie de autenticación; imposible para API pública stateless; sin ventajas a largo plazo |
| PASETO tokens | Alternativa más segura a JWT estándar | Descartada | Ecosistema de librerías más reducido en Python/Django y React Native; menor familiaridad del equipo; beneficio marginal vs. JWT con RS256 |
| JWT + Refresh Tokens (RS256) | Access token de vida corta + refresh token con rotación | Seleccionada ✓ | Estándar de industria, stateless, compatible con móvil y API, equipo tiene experiencia, librerías maduras en Django y React Native |
Especificaciones técnicas clave:
Parámetros de tokens: Access token TTL: 15 minutos. Refresh token TTL: 30 días (con rotación automática en cada uso). Lista de revocación: Redis con TTL sincronizado. Algoritmo: RS256 (clave 2048-bit, rotación anual).
Criterios de éxito para dar la migración por completada:
- 100% de clínicas migrando a JWT sin incidencias P0
- Error rate de autenticación <0.1% en las 72h post-cutover completo
- SDK móvil JWT funcionando en build de prueba de React Native
- Auditoría de seguridad interna aprobada (Sprint 3)
- Documentación API pública publicada en developer.nutriflow.io
- Tablas de sesión Django eliminadas de PostgreSQL