Overview
The Authentication Service (jea-auth) handles user authentication, authorization, and role-based access control (RBAC) for the Sistema de Ventas platform. It uses JWT tokens for secure authentication and manages users, roles, and access permissions. Database: MySQL (auth-jea)
Port: Dynamic (configured via Eureka)
Core Entities
AuthUser
Basic authentication credentials. Location:jea-auth/src/main/java/com/example/jeaauth/entity/AuthUser.java:10
Fields:
id(Integer) - Primary keyuserName(String) - Unique usernamepassword(String) - Encrypted password
auth_user
Usuario
Extended user profile information. Location:jea-auth/src/main/java/com/example/jeaauth/entity/Usuario.java:9
Fields:
id(Long) - Primary keynombres(String) - First name(s)apellidoPaterno(String) - Paternal surnameapellidoMaterno(String) - Maternal surnamedni(String) - National identification numberdireccion(String) - Addresstelefono(String) - Phone numberestado(Boolean) - Active statusauthUser(AuthUser) - One-to-one relationship with AuthUser
usuario
Relationships:
- One-to-one with
AuthUserviaauth_user_id
Rol
User role definitions. Location:jea-auth/src/main/java/com/example/jeaauth/entity/Rol.java:9
Fields:
idRol(Long) - Primary keynombre(RolNombre enum) - Role name (ADMIN, USER, ALMACENERO)descripcion(String) - Role description
roles
Enums:
Acceso
Application access/menu items. Location:jea-auth/src/main/java/com/example/jeaauth/entity/Acceso.java:7
Fields:
idAcceso(Long) - Primary keynombre(String) - Access nameurl(String) - Route URLicono(String) - Icon identifierorden(Long) - Display order
accesos
UsuarioRol
Many-to-many relationship between users and roles. Table:usuario_rol
Composite Key: usuario_id, rol_id
AccesoRol
Many-to-many relationship between roles and access permissions. Table:acceso_rol
Composite Key: acceso_id, rol_id
Key Components
Controllers
AuthUserController
Location:jea-auth/src/main/java/com/example/jeaauth/controller/AuthUserController.java:14
Endpoints:
POST /auth/login- User login, returns JWT tokenPOST /auth/validate- Validate JWT tokenPOST /auth/create- Create new auth user
UsuarioController
Location:jea-auth/src/main/java/com/example/jeaauth/controller/UsuarioController.java:18
Endpoints:
POST /usuario/crear- Create new user with profilePOST /usuario/asignar-rol- Assign role to userPUT /usuario/{id}/estado- Change user active statusGET /usuario/estado- List users by statusPUT /usuario/{id}- Update user information
RolController
Location:jea-auth/src/main/java/com/example/jeaauth/controller/RolController.java
Manages role operations.
AccesoController
Location:jea-auth/src/main/java/com/example/jeaauth/controller/AccesoController.java
Manages access permissions.
Services
AuthUserService
Location:jea-auth/src/main/java/com/example/jeaauth/service/AuthUserService.java
Implementation: AuthUserServiceImpl.java:12
Handles authentication logic, JWT generation, and token validation.
UsuarioService
Location:jea-auth/src/main/java/com/example/jeaauth/service/UsuarioService.java
Implementation: UsuarioServiceImpl.java
Manages user CRUD operations and role assignments.
AccesoService
Location:jea-auth/src/main/java/com/example/jeaauth/service/AccesoService.java
Implementation: AccesoServiceImpl.java
Manages access permissions and menu items.
Repositories
AuthUserRepository- AuthUser data accessUsuarioRepository- Usuario data accessRolRepository- Rol data accessAccesoRepository- Acceso data accessUsuarioRolRepository- User-role relationshipsAccesoRolRepository- Access-role relationships
Security Components
JwtProvider
Location:jea-auth/src/main/java/com/example/jeaauth/security/JwtProvider.java
Generates and validates JWT tokens.
SecurityConfig
Location:jea-auth/src/main/java/com/example/jeaauth/security/SecurityConfig.java
Spring Security configuration.
PasswordEncoderConfig
Location:jea-auth/src/main/java/com/example/jeaauth/security/PasswordEncoderConfig.java
BCrypt password encoder configuration.
DTOs
AuthUserDto- Authentication requestAuthResponseDto- Authentication response with tokenTokenDto- Token validation responseUsuarioDto- User creation/updateUsuarioListadoDto- User listing with rolesUsuarioRolDto- Role assignmentAccesoDto- Access permission data
Dependencies
Spring Boot Version: 2.5.4 Spring Cloud Version: 2020.0.3 Key Dependencies:spring-boot-starter-data-jpa- JPA/Hibernatespring-boot-starter-web- REST APIspring-boot-starter-security- Security frameworkspring-cloud-starter-netflix-eureka-client- Service discoveryspring-cloud-starter-config- Centralized configurationio.jsonwebtoken:jjwt:0.9.1- JWT token handlingmysql-connector-j:8.0.31- MySQL driverlombok- Code generation
Configuration
Config File:config-data/jea-auth-service.yml
Key Settings:
Database Schema
Main Tables:auth_user- Authentication credentialsusuario- User profilesroles- Role definitionsaccesos- Access permissions/menu itemsusuario_rol- User-role mappingacceso_rol- Role-access mapping
Authentication Flow
- User submits credentials to
/auth/login - Service validates credentials against
auth_usertable - JWT token generated with user information and roles
- Token returned in
AuthResponseDto - Client includes token in subsequent requests
- Gateway validates token via
/auth/validate
Key Features
- JWT-based stateless authentication
- Role-based access control (RBAC)
- User profile management
- Dynamic access permissions
- Password encryption with BCrypt
- User activation/deactivation
- Eureka service discovery integration
- Centralized configuration via Config Server