Skip to content

[SECURITY] F-05.3 — Autenticación Externa y Protección de Rutas

Épica: EPIC-05 — Infraestructura y Conectividad

🏷️ Categoría

Categoría: SecurityImpacta en: Equipo Backend (Laravel)

📦 Dependencias

Backlogs que deben estar completados antes de implementar esta feature.

BacklogMotivo
F-00.1Base Laravel instalada; bootstrap/app.php donde registrar el middleware
F-05.5Tabla users y UserSeeder disponibles para el mock de sesión

Prioridad: Must


Descripción: Como administrador del sistema Quiero que el panel valide mi sesión activa proveniente del sistema de autenticación externo Para acceder al panel sin necesidad de un formulario de login propio dentro de esta aplicación

Criterios de Aceptación (Checklist):

  • [ ] Escenario 1 (Acceso con sesión válida): Dado que llego al panel con una cookie de sesión válida del sistema externo, cuando el middleware de autenticación la valida, entonces accedo directamente al dashboard sin formulario de login.
  • [ ] Escenario 2 (Acceso sin sesión): Dado que un usuario sin sesión activa intenta acceder a cualquier ruta del panel, cuando el middleware detecta que no hay sesión, entonces es redirigido al portal externo de login (URL configurable en .env).
  • [ ] Escenario 3 (Rutas protegidas): Dado que todas las rutas web están dentro del grupo middleware:auth, cuando cualquier petición no autenticada llega, entonces Laravel la redirige automáticamente via Authenticate middleware.
  • [ ] Escenario 4 (Logout): Dado que el admin pulsa "Cerrar sesión", cuando se ejecuta la acción (ruta POST /logout), entonces la sesión local de Laravel se invalida y se redirige al portal externo.
  • [ ] Escenario 5 (Mock en desarrollo): Dado que estamos en entorno APP_ENV=local, cuando el middleware AuthMock está activo, entonces el usuario se carga directamente desde la tabla users sin validar sesión externa. Permite desarrollo sin integración con el auth externo.
  • [ ] Requisito Técnico: Middleware AuthGateway en app/Http/Middleware/. Lógica: si APP_ENV=local → usa AuthMock (carga User::find(1)); si production → valida token/cookie del sistema externo. Todas las rutas web usan middleware:auth. Registrar en bootstrap/app.php.

MoSCoW: MUSTSprint: Sprint 0

Notas:

  • Sin pantalla de login en este panel. El wireframe del proyecto tiene la pantalla de login tachada expresamente.
  • El sistema externo de autenticación es una API separada fuera del alcance de este proyecto.
  • La integración real con el auth externo se documenta en .env.example (variable AUTH_EXTERNAL_URL).
  • En desarrollo: php artisan db:seed --seeder=UserSeeder crea el usuario mock con ID=1.

Log Management Dashboard — Documentación del Proyecto