trading-platform/orchestration/tareas/2026-01-27/TASK-2026-01-27-BLOCKER-001-TOKEN-REFRESH/01-CONTEXTO.md
Adrian Flores Cortes 31b1846fea [TASK-009] refactor: Reorganize tasks to date folders
Moved loose tasks to date folders:
- 2026-01-25/: TASK-002-FRONTEND-COMPREHENSIVE-AUDIT, TASK-FRONTEND-MODULE-DOCS
- 2026-01-27/: TASK-BLOCKER-001-TOKEN-REFRESH, TASK-MASTER-ANALYSIS-PLAN

Moved utility files to _utils/:
- ARCHIVE-INFO.md
- ATOMIC-TASKS-INDEX.yml

Aligns with workspace-v2 orchestration standards.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 17:57:14 -06:00

2.4 KiB

01-CONTEXTO.md - BLOCKER-001 Token Refresh

Situación Actual

El sistema de token refresh YA ESTÁ IMPLEMENTADO AL 90% y funciona correctamente:

Implementación Existente

Ubicación: apps/frontend/src/lib/apiClient.ts:133-191

Características actuales:

  • Interceptor Axios detecta 401 automáticamente
  • Backend endpoint /auth/refresh funcional
  • Request queueing previene refreshes duplicados
  • Retry automático del request original con nuevo token
  • Logout automático en caso de fallo de refresh

Código funcional:

// Interceptor que detecta 401
axiosInstance.interceptors.response.use(
  (response) => response,
  async (error) => {
    if (error.response?.status === 401 && !originalRequest._retry) {
      if (isRefreshing) {
        return new Promise((resolve, reject) => {
          failedQueue.push({ resolve, reject });
        }).then(token => { /* retry with new token */ });
      }
      // Refresh token logic...
    }
  }
);

Problema

No es un blocker crítico, pero faltan mejoras de seguridad y UX:

  1. Rate limiting genérico - /auth/refresh usa el mismo rate limit que otros endpoints (100/15min)
  2. Sin token rotation - El mismo refresh token se puede usar múltiples veces
  3. Sin session validation - No valida que la sesión esté activa en BD
  4. Sin proactive refresh - Espera a que el token expire (UX subóptima)

Impacto

Sin estas mejoras:

  • 🔴 Vulnerabilidad a token replay attacks
  • 🟡 UX subóptima (espera a 401 para refrescar)
  • 🟡 Posible race condition en refreshes concurrentes (raro)
  • 🔴 No detecta sesiones revocadas hasta que falla el request

Alcance de la Tarea

NO: Reescribir el sistema de auth SÍ: Agregar 4 mejoras incrementales a código existente

Esfuerzo: 12h distribuidas en 4 fases

Archivos Críticos Existentes

  • apps/frontend/src/lib/apiClient.ts - Interceptor Axios (191 LOC)
  • apps/backend/src/modules/auth/services/token.service.ts - Token generation (450 LOC)
  • apps/backend/src/modules/auth/auth.routes.ts - Routes (120 LOC)
  • apps/backend/src/core/middleware/auth.middleware.ts - Auth middleware (280 LOC)
  • apps/database/ddl/schemas/auth/tables/04-sessions.sql - Sessions table

Referencias

Plan completo: C:\Users\cx_ad\.claude\projects\C--Empresas-ISEM-workspace-v2\d20bcdfd-6fd5-402d-ae54-fce930f9c826.jsonl

Sección del plan: BLOCKER-001: Token Refresh Improvements (12h)