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