🛡️ Alpura Back Java Lib Security v2.3
Manual de implementación de la librería común de seguridad y autenticación OAuth2 / JWT para microservicios Spring Boot (com.alpura:back-java-lib-security:2.3).
📦 Requisitos
- Java JDK: 21 (Temurin LTS)
- Spring Boot: 3.4.4 o superior
- Alpura BOM: 1.0.4
⚙️ Instalación
Opción A: Heredando versión desde Alpura BOM 1.0.4 (RECOMENDADO)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alpura</groupId>
<artifactId>bom</artifactId>
<version>1.0.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alpura</groupId>
<artifactId>back-java-lib-security</artifactId>
</dependency>
</dependencies>
Opción B: Uso directo (Standalone)
<dependency>
<groupId>com.alpura</groupId>
<artifactId>back-java-lib-security</artifactId>
<version>2.3</version>
</dependency>
Gradle:
implementation 'com.alpura:back-java-lib-security:2.3'
🛠️ Configuración (YAML)
1. Configuración Estándar Resource Server (Keycloak / OAuth2)
spring:
security:
oauth2:
resourceserver:
jwt:
issuer-uri: https://hub-uat-login.alpura.com/auth/realms/Alpura
jwk-set-uri: https://hub-uat-login.alpura.com/auth/realms/Alpura/protocol/openid-connect/certs
alpuraSecurity:
evaluateRoles: false
disableSecurity: false # Define si se deshabilita la seguridad (ej. pruebas locales)
2. Configuración para Adquisición / Propagación de Tokens OAuth2
v2.3 incluye utilidades (OAuthTokenClient, OAuthTokenServiceImpl, TokenRelayInterceptor) para solicitar tokens OAuth2 automáticamente a un IDP mediante client_credentials o password grant:
security:
oauth2:
token:
url: https://hub-uat-login.alpura.com/auth/realms/Alpura/protocol/openid-connect/token
clientId: MobileApp
clientSecret: KkW4Z6Y28IhMqpjvFCN4jS5MTO253Sj5
grantType: client_credentials # o 'password'
userName: ""
password: ""
🧭 Escaneo de Componentes
Asegúrate de registrar el paquete de seguridad en @ComponentScan:
@SpringBootApplication
@ComponentScan({
"com.alpura.security",
"com.alpura.utilities"
})
public class ExApplication {
public static void main(String[] args) {
SpringApplication.run(ExApplication.class, args);
}
}
🚀 Características y Rutas Excluidas
La librería v2.3 configura automáticamente las siguientes reglas en la cadena de seguridad (SecurityFilterChain):
- Rutas Públicas Permitidas Automáticamente:
- Endpoints de monitoreo Actuator:
/actuator/** - Documentación interactiva OpenAPI / Swagger UI:
/,/v3/api-docs/**,/swagger-ui.html,/swagger-ui/**
- Endpoints de monitoreo Actuator:
- Modo Bypass: Al establecer
alpuraSecurity.disableSecurity: true, la aplicación permitirá todas las solicitudes HTTP (/**) sin exigir token JWT (ideal para pruebas offline). - Conversión de Roles:
JwtAuthenticationConvertermapea los roles del claimrealm_accessañadiendo el prefijoROLE_.
🔧 Extracción de Contexto y Token en Controlador
Extiende tus controladores de BaseController (de back-java-lib-common-utilities):
@RestController
@RequestMapping("/api/v1/mi-modulo")
public class MiController extends BaseController {
@GetMapping("/datos")
public ResponseEntity<SingleResponseVO<MyData>> getDatos() {
RequestVO<Void> request = getRequest(); // Extrae contexto de usuario y token
// ...
return ResponseEntity.ok(response);
}
}