UserSvc
El Servicio de Usuarios (UserSvc) es responsable de gestionar las identidades de usuario, autenticación y perfiles dentro de la plataforma CryoNova Labs.
Responsabilidades Principales
UserSvc es responsable de:
- Gestión de Identidad: Registro, autenticación y autorización
- Gestión de Perfiles: Información de usuario, preferencias y configuraciones
- Gestión de Sesiones: Sesiones de inicio y seguridad
- Control de Acceso: Permisos y roles de usuario
Arquitectura
El servicio implementa una arquitectura por capas con el patrón CQRS:
Modelo de Datos
Entidades principales:
| Entidad | Descripción |
|---|---|
| Usuario | Información central de identidad del usuario |
| Rol | Roles de usuario en el sistema |
| Permiso | Permisos granulares para acciones |
| PerfilUsuario | Datos detallados del perfil de usuario |
| ActividadUsuario | Registro de auditoría de actividades de usuario |
Implementación CQRS
Comandos
RegistrarUsuario: Registrar nuevo usuarioActualizarPerfilUsuario: Actualizar perfil de usuarioCambiarContraseña: Cambiar contraseña de usuarioAsignarRol: Asignar rol a usuarioDesactivarUsuario: Desactivar cuenta de usuario
Consultas
ObtenerUsuarioPorId: Obtener usuario por IDObtenerUsuarioPorEmail: Obtener usuario por emailObtenerUsuariosPorRol: Listar usuarios por rolObtenerPermisosUsuario: Obtener permisos de usuarioObtenerActividadUsuario: Obtener historial de actividad del usuario
Endpoints API
API RESTful:
Autenticación
POST /api/auth/login: Inicio de sesiónPOST /api/auth/logout: Cierre de sesiónPOST /api/auth/password/change: Cambio de contraseña
Gestión de Usuarios
GET /api/users: Listar usuariosGET /api/users/{id}: Obtener usuario por IDPOST /api/users: Crear nuevo usuarioPUT /api/users/{id}: Actualizar usuarioDELETE /api/users/{id}: Eliminar usuario
Roles y Permisos
GET /api/roles: Listar rolesPOST /api/roles: Crear nuevo rolGET /api/users/{id}/permissions: Obtener permisos de usuarioPUT /api/users/{id}/roles: Asignar roles a usuario
Eventos Publicados
El servicio publica los siguientes eventos en RabbitMQ:
UsuarioRegistrado: Cuando un nuevo usuario se registraUsuarioActualizado: Cuando se actualiza información de usuarioUsuarioDesactivado: Cuando se desactiva un usuarioRolUsuarioCambiado: Cuando cambian los roles de usuarioIntentoLoginFallido: Cuando falla el inicio de sesión (para monitoreo de seguridad)
Eventos Consumidos
El servicio reacciona a los siguientes eventos:
PedidoCompletado(OrderSvc): Actualiza actividad del usuarioProductoComprado(OrderSvc): Actualiza preferencias del usuario
Seguridad
- Hash de Contraseñas: Argon2id para almacenamiento seguro
- Autenticación JWT: Tokens de acceso de corta duración
- Protección contra Fuerza Bruta: Limitación de tasa para intentos de inicio de sesión
- Monitoreo de Actividad: Detección de actividades sospechosas
Tecnologías Utilizadas
- .NET 10: Framework base
- PostgreSQL: Base de datos principal
- Dapper: Micro ORM para acceso a datos
- JWT: Tokens de autenticación
- RabbitMQ: Mensajería para eventos
Integración con Otros Servicios
- Notifica al NotificationSvc sobre eventos relacionados con usuarios (registro, cambio de contraseña, etc.)
- Consulta al ProductSvc para verificar permisos de acceso a productos específicos
Estrategia de Despliegue
- Despliegue directo en servidores dedicados
- Alta disponibilidad: múltiples instancias
- Copias de seguridad diarias
- Actualizaciones Blue/Green para minimizar tiempo de inactividad
Monitoreo
- Monitoreo de intentos de inicio de sesión
- Analíticas de actividad de usuarios
- Detección de anomalías de seguridad
- Métricas de rendimiento para operaciones de autenticación