# EPICA: EPIC-MGN-001 - Autenticacion ## Metadata | Campo | Valor | |-------|-------| | **ID** | EPIC-MGN-001 | | **Nombre** | Sistema de Autenticacion | | **Modulo** | auth | | **Fase** | Fase 1 - Foundation | | **Prioridad** | P0 (Critico) | | **Estado** | Ready | | **Story Points** | 34 | | **Sprint(s)** | Sprint 1 (core), Sprint 2 (recovery) | | **Plan Detalle** | [SPRINT-PLAN-FASE-1.md](../SPRINT-PLAN-FASE-1.md) | --- ## Descripcion Sistema de autenticacion robusto que proporciona login con email/password, manejo de tokens JWT (access + refresh), soporte para OAuth providers (Google, Microsoft), sesiones multi-dispositivo, recuperacion de password y opcionalmente 2FA. Esta epica es **fundamental** ya que todos los demas modulos dependen de ella para identificar y autorizar usuarios. --- ## Objetivo de Negocio Proveer un sistema de autenticacion seguro, escalable y con buena experiencia de usuario que: - Proteja el acceso a la plataforma - Soporte multiples metodos de autenticacion - Permita sesiones simultaneas controladas - Cumpla con estandares de seguridad (OWASP) --- ## Stakeholders | Rol | Nombre/Equipo | Responsabilidad | |-----|---------------|-----------------| | Product Owner | Equipo Producto | Aprobacion de criterios | | Tech Lead | Equipo Backend | Validacion tecnica y seguridad | | Usuarios | Todos los usuarios | Feedback de UX | --- ## Historias de Usuario | ID | Historia | Prioridad | SP | Estado | |----|----------|-----------|-----|--------| | US-MGN001-001 | Como usuario, quiero iniciar sesion con email y password para acceder al sistema | P0 | 8 | Ready | | US-MGN001-002 | Como usuario, quiero recuperar mi password via email para restaurar acceso | P0 | 5 | Ready | | US-MGN001-003 | Como usuario, quiero cerrar sesion para proteger mi cuenta | P0 | 2 | Ready | | US-MGN001-004 | Como usuario, quiero que mi sesion se renueve automaticamente para no perder trabajo | P0 | 5 | Ready | | US-MGN001-005 | Como usuario, quiero iniciar sesion con Google/Microsoft para facilitar el acceso | P1 | 8 | Backlog | | US-MGN001-006 | Como admin, quiero configurar 2FA para aumentar la seguridad | P2 | 5 | Backlog | | US-MGN001-007 | Como usuario, quiero ver mis sesiones activas para controlar accesos | P2 | 3 | Backlog | **Total Story Points:** 34 SP (Fibonacci: 8+5+2+5+8+5+3 = 36, ajustado a 34) --- ## Criterios de Aceptacion de la Epica **Funcionales:** - [ ] Login con email/password funcional - [ ] Tokens JWT con access (15min) y refresh (7 dias) - [ ] Password recovery via email con token temporal - [ ] Logout individual y logout de todas las sesiones - [ ] Almacenamiento seguro de passwords (bcrypt, cost 12) - [ ] Rate limiting en endpoints de auth (5 intentos/minuto) **No Funcionales:** - [ ] Performance: Login < 500ms - [ ] Seguridad: Passwords hasheados, tokens firmados - [ ] Usabilidad: Flujo de login en max 2 pasos **Tecnicos:** - [ ] Cobertura de tests > 80% - [ ] Documentacion Swagger completa - [ ] Integracion DB-Backend-Frontend verificada --- ## Dependencias **Esta epica depende de:** | Epica/Modulo | Estado | Bloqueante | |--------------|--------|------------| | PostgreSQL | Ready | Si | | Schema core_auth | Por crear | Si | **Esta epica bloquea:** | Epica/Modulo | Razon | |--------------|-------| | EPIC-MGN-002 Users | Requiere sistema de auth | | EPIC-MGN-003 Roles | Requiere identificacion de usuarios | | EPIC-MGN-004 Tenants | Requiere autenticacion base | | Todos los modulos | Requieren auth para acceso | --- ## Desglose Tecnico **Database:** - [ ] Schema: `core_auth` - [ ] Tablas: 4 (users_auth, sessions, tokens, oauth_connections) - [ ] Funciones: 2 (validar_password, generar_token) - [ ] RLS Policies: Si (aislamiento por tenant) **Backend:** - [ ] Modulo: `auth` - [ ] Entities: 4 (UserAuth, Session, Token, OAuthConnection) - [ ] Endpoints: 8 (login, logout, refresh, forgot-password, reset-password, oauth-login, oauth-callback, sessions) - [ ] Tests: 24+ **Frontend:** - [ ] Paginas: 4 (Login, ForgotPassword, ResetPassword, Sessions) - [ ] Componentes: 6 (LoginForm, PasswordInput, OAuthButtons, SessionList, etc.) - [ ] Stores: 1 (authStore) --- ## Riesgos | Riesgo | Probabilidad | Impacto | Mitigacion | |--------|--------------|---------|------------| | Vulnerabilidades de seguridad | Media | Alto | Code review, auditorias, OWASP checklist | | Performance en login | Baja | Medio | Caching, optimizacion de queries | | Integracion OAuth compleja | Media | Medio | Documentacion detallada, POC previo | --- ## Definition of Ready (DoR) - [x] Historias de usuario definidas - [x] Criterios de aceptacion claros - [x] Dependencias identificadas - [x] Estimacion completada - [x] Diseno tecnico aprobado - [x] Sin bloqueadores activos ## Definition of Done (DoD) - [ ] Codigo implementado y revisado - [ ] Tests pasando (unit, integration, e2e) - [ ] Documentacion actualizada - [ ] Inventarios actualizados - [ ] Trazas registradas - [ ] Demo realizada - [ ] Product Owner aprobo --- ## Documentacion Relacionada - Requerimientos: `docs/03-requerimientos/RF-auth/` - Especificaciones: `docs/04-modelado/especificaciones-tecnicas/ET-auth-*.md` - User Stories: `docs/05-user-stories/MGN-001/` - DDL Spec: `docs/04-modelado/database-design/DDL-SPEC-core_auth.md` - ADR: `docs/97-adr/ADR-001-stack-tecnologico.md` --- ## Historial | Fecha | Cambio | Autor | |-------|--------|-------| | 2025-12-05 | Creacion de epica | Requirements-Analyst | --- **Creada por:** Requirements-Analyst **Fecha:** 2025-12-05 **Ultima actualizacion:** 2025-12-05