[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.
| Backlog | Motivo |
|---|---|
| F-00.1 | Base Laravel instalada; bootstrap/app.php donde registrar el middleware |
| F-05.5 | Tabla 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 viaAuthenticatemiddleware. - [ ] 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 middlewareAuthMockestá activo, entonces el usuario se carga directamente desde la tablauserssin validar sesión externa. Permite desarrollo sin integración con el auth externo. - [ ] Requisito Técnico: Middleware
AuthGatewayenapp/Http/Middleware/. Lógica: siAPP_ENV=local→ usaAuthMock(cargaUser::find(1)); siproduction→ valida token/cookie del sistema externo. Todas las rutas web usanmiddleware:auth. Registrar enbootstrap/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(variableAUTH_EXTERNAL_URL). - En desarrollo:
php artisan db:seed --seeder=UserSeedercrea el usuario mock con ID=1.