176 lines
5.6 KiB
Markdown
176 lines
5.6 KiB
Markdown
# 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
|