# Indice de Requerimientos Funcionales - MGN-001 Auth ## Resumen del Modulo | Campo | Valor | |-------|-------| | **Codigo** | MGN-001 | | **Nombre** | Auth - Autenticacion | | **Prioridad** | P0 - Critica | | **Total RFs** | 5 | | **Estado** | En documentacion | | **Fecha** | 2025-12-05 | --- ## Descripcion General El modulo de autenticacion es el pilar fundamental de seguridad del ERP. Proporciona: - **Autenticacion**: Verificacion de identidad del usuario - **Autorizacion**: Generacion de tokens con permisos - **Gestion de Sesiones**: Control del ciclo de vida de sesiones - **Seguridad**: Proteccion contra ataques comunes --- ## Lista de Requerimientos Funcionales | ID | Nombre | Prioridad | Complejidad | Estado | Story Points | |----|--------|-----------|-------------|--------|--------------| | [RF-AUTH-001](./RF-AUTH-001.md) | Login con Email y Password | P0 | Media | Aprobado | 10 | | [RF-AUTH-002](./RF-AUTH-002.md) | Generacion y Validacion JWT | P0 | Alta | Aprobado | 9 | | [RF-AUTH-003](./RF-AUTH-003.md) | Refresh Token y Renovacion | P0 | Media | Aprobado | 10 | | [RF-AUTH-004](./RF-AUTH-004.md) | Logout y Revocacion | P0 | Baja | Aprobado | 6 | | [RF-AUTH-005](./RF-AUTH-005.md) | Recuperacion de Password | P1 | Media | Aprobado | 10 | **Total Story Points:** 45 --- ## Grafo de Dependencias ``` RF-AUTH-001 (Login) │ ├──► RF-AUTH-002 (JWT Tokens) │ │ │ └──► RF-AUTH-003 (Refresh Token) │ │ │ └──► RF-AUTH-004 (Logout) │ └──► RF-AUTH-005 (Password Recovery) │ └──► RF-AUTH-004 (Logout) [logout-all] ``` ### Orden de Implementacion Recomendado 1. **RF-AUTH-001** - Login (base de todo) 2. **RF-AUTH-002** - JWT Tokens (generacion) 3. **RF-AUTH-003** - Refresh Token (renovacion) 4. **RF-AUTH-004** - Logout (cierre de sesion) 5. **RF-AUTH-005** - Password Recovery (recuperacion) --- ## Endpoints del Modulo | Metodo | Endpoint | RF | Descripcion | |--------|----------|-----|-------------| | POST | `/api/v1/auth/login` | RF-AUTH-001 | Autenticar usuario | | POST | `/api/v1/auth/refresh` | RF-AUTH-003 | Renovar tokens | | POST | `/api/v1/auth/logout` | RF-AUTH-004 | Cerrar sesion | | POST | `/api/v1/auth/logout-all` | RF-AUTH-004 | Cerrar todas las sesiones | | POST | `/api/v1/auth/password/request-reset` | RF-AUTH-005 | Solicitar recuperacion | | POST | `/api/v1/auth/password/reset` | RF-AUTH-005 | Cambiar password | | GET | `/api/v1/auth/password/validate-token/:token` | RF-AUTH-005 | Validar token reset | --- ## Tablas de Base de Datos | Tabla | RF | Descripcion | |-------|-----|-------------| | `users` | RF-AUTH-001 | Usuarios (existente, agregar columnas) | | `refresh_tokens` | RF-AUTH-002, RF-AUTH-003 | Tokens de refresh | | `revoked_tokens` | RF-AUTH-002 | Blacklist de tokens | | `session_history` | RF-AUTH-001, RF-AUTH-004 | Historial de sesiones | | `login_attempts` | RF-AUTH-001 | Control de intentos fallidos | | `password_reset_tokens` | RF-AUTH-005 | Tokens de recuperacion | | `password_history` | RF-AUTH-005 | Historial de passwords | --- ## Criterios de Aceptacion Consolidados ### Seguridad - [ ] Passwords hasheados con bcrypt (salt rounds = 12) - [ ] Tokens JWT firmados con RS256 - [ ] Refresh tokens en httpOnly cookies - [ ] Access tokens con expiracion corta (15 min) - [ ] Deteccion de token replay - [ ] Rate limiting en todos los endpoints - [ ] No revelar existencia de emails ### Funcionalidad - [ ] Login con email/password funcional - [ ] Generacion correcta de par de tokens - [ ] Refresh automatico antes de expiracion - [ ] Logout individual y global - [ ] Recuperacion de password via email ### Auditoria - [ ] Todos los logins registrados - [ ] Todos los logouts registrados - [ ] Intentos fallidos registrados - [ ] Cambios de password registrados --- ## Reglas de Negocio Transversales | ID | Regla | Aplica a | |----|-------|----------| | RN-T001 | Multi-tenancy: tenant_id obligatorio en tokens | Todos | | RN-T002 | Usuarios pueden tener multiples sesiones | RF-001, RF-003 | | RN-T003 | Maximo 5 sesiones activas por usuario | RF-001, RF-003 | | RN-T004 | Bloqueo despues de 5 intentos fallidos | RF-001 | | RN-T005 | Notificaciones de seguridad via email | RF-004, RF-005 | --- ## Estimacion Total | Capa | Story Points | |------|--------------| | Database | 9 | | Backend | 23 | | Frontend | 13 | | **Total** | **45** | --- ## Riesgos Identificados | Riesgo | Probabilidad | Impacto | Mitigacion | |--------|--------------|---------|------------| | Vulnerabilidad en manejo de tokens | Media | Alto | Code review, testing seguridad | | Performance en blacklist | Baja | Medio | Redis con TTL automatico | | Email delivery failures | Media | Medio | Retry queue, logs | | Session fixation | Baja | Alto | Regenerar tokens post-login | --- ## Referencias ### Documentacion Relacionada - [DDL-SPEC-core_auth.md](../../02-modelado/database-design/DDL-SPEC-core_auth.md) - Especificacion de base de datos - [ET-auth-backend.md](../../02-modelado/especificaciones-tecnicas/ET-auth-backend.md) - Especificacion tecnica backend - [TP-auth.md](../../04-test-plans/TP-auth.md) - Plan de pruebas ### Directivas Aplicables - `DIRECTIVA-DOCUMENTACION-PRE-DESARROLLO.md` - `DIRECTIVA-PATRONES-ODOO.md` - `ESTANDARES-API-REST-GENERICO.md` --- ## Historial de Cambios | Version | Fecha | Autor | Cambios | |---------|-------|-------|---------| | 1.0 | 2025-12-05 | System | Creacion inicial con 5 RFs | --- ## Aprobaciones | Rol | Nombre | Fecha | Firma | |-----|--------|-------|-------| | Analista | System | 2025-12-05 | [x] | | Tech Lead | - | - | [ ] | | Product Owner | - | - | [ ] |