Skip to content

feat: joko-security 2.x — Spring Boot 3.5, Java 21 y arquitectura modular - #162

Merged
alefq merged 6 commits into
jokoframework:developfrom
alefq:feature/update-spring-and-architecture
Aug 16, 2026
Merged

feat: joko-security 2.x — Spring Boot 3.5, Java 21 y arquitectura modular#162
alefq merged 6 commits into
jokoframework:developfrom
alefq:feature/update-spring-and-architecture

Conversation

@alefq

@alefq alefq commented Aug 16, 2026

Copy link
Copy Markdown
Member

Resumen

Versión 2.x de joko-security: librería modular sobre Spring Boot 3.5.16 / Java 21 / Jakarta, en lugar del JAR único 1.2.x (Boot 2.7 / Java 11–17).

La arquitectura modular y la primera migración a Spring Boot 3.3.x (JJWT 0.12, Testcontainers, Maven Wrapper, harness development/, documentación de empaquetado e integración) son trabajo de Rodrigo Villalba (rodrigojv). Este PR continúa esa base: Boot 3.5.16, Java 21, cierre de CVSS ≥ 8, Dependency-Check 13 y autoconfigure de los controllers web.

El contrato HTTP de tokens no cambia: POST /api/login → refresh, POST /api/token/user-access → access, APIs con header X-JOKO-AUTH (JWT crudo, no Authorization: Bearer). Logout: POST /api/logout con el refresh.

Créditos

  • Arquitectura modular y update inicial a Spring Boot 3.3.x: Rodrigo Villalba (rodrigojv).
  • Alineado 3.5.16, Java 21, ODC 13, Maven Central, autoconfigure web, jwt.secret opcional: continuación sobre esa base.

Módulos

Módulo Rol
joko-security-parent BOM / parent Maven
joko-security-core JWT, filtros, APIs
joko-security-storage-postgres Persistencia (schema joko_security)
joko-security-web Controllers REST (login, tokens, logout)
joko-security-autoconfigure Auto-configuración Spring Boot
joko-security-starter Dependencia única del consumidor

Los consumidores declaran una dependencia: io.github.jokoframework:joko-security-starter:2.0.0-SNAPSHOT.

Requisito de runtime/compilación: Java 21+. Hasta que 2.x esté en Maven Central: ./mvnw install en este repo. El POM no lista remotes; Central + ~/.m2. Un remoto privado va en settings.xml (settings.xml.example).

Seguridad de dependencias

  • Parent 3.5.16 (Spring Security 6.5, Framework 6.2.19, Tomcat 10.1.57) y driver PostgreSQL 42.7.13.
  • OWASP (Open Worldwide Application Security Project) Dependency-Check 13 en verify (aggregate). Default: solo warning (failBuildOnCVSS=11).
  • Clave NVD (National Vulnerability Database): export NVD_API_KEY=…
  • Gate CI: ./mvnw verify -Ddependency-check.failBuildOnCVSS=8
  • Skip: -Ddependency-check.skip=true

El informe del reactor es el aggregate de la raíz, no dependency-check:check en un módulo (inherited=false).

Autoconfigure / breaking para integradores 1.x

  • joko.security.web.enabled=true registra SecurityFilterChain y los controllers (/api/login, tokens, logout).
  • joko.security.jwt.secret es opcional; si está vacío sigue joko.secret.mode (BD keychain o FILE).
  • El scan de la app debe acotarse al paquete propio; no hace falta escanear todo io.github.jokoframework.
  • Artefacto: joko-security 1.2.x → joko-security-starter 2.x.
  • javax.*jakarta.*. Tabla de tokens: tokens (no token de Liquibase 1.x).
  • Esquema de referencia: Flyway en database-templates/flyway/.
  • Compilador y bytecode: Java 21 (classfile 65).

Harness: módulo development/ (Boot 3.5, Flyway, H2).

Cómo probar

# Java 21+
./mvnw -B install -DskipTests -Ddependency-check.skip=true

Consumo de referencia: jokoframework/joko_backend_starter_kit 2.0 (PR aparte).

alefq added 6 commits March 2, 2024 11:28
Debido a que aún no hay un spring-boot-starter que corrija

https://spring.io/security/cve-2024-22243
- Migra a Spring Boot 3.3, JJWT 0.12 y tests con Testcontainers
- Separa la librería en core, storage, web, autoconfigure y starter
- Agrega harness de development, Maven Wrapper y scripts de publish
- Documenta empaquetado, integración y publicación a GitHub Packages
- Quita plan de engagement, CLAUDE.md y referencias a un cliente
- Reemplaza hostnames, credenciales y rutas internas por placeholders

Cambios realizados y revisados por Rodrigo Villalba, con asistencia
de IA.
- Parent 3.5.16 (Security 6.5, Framework 6.2.19, Tomcat 10.1.57) y
  postgresql 42.7.13 para CVSS >= 8; Springdoc 2.8.17.
- Dependency-Check 13 en verify (aggregate, warning por default,
  NVD_API_KEY por env). Gate: -Ddependency-check.failBuildOnCVSS=8.
- Resolución solo Maven Central; remotes privados en settings.xml.
- Registra controllers web si joko.security.web.enabled=true.
- jwt.secret opcional (sigue keychain / joko.secret.mode).
- development/ deja de escanear paquetes 1.x.
java.version=21 en el parent, development y maven-compiler-plugin
de los módulos. publish.sh / publish-artifactory.sh exigen 21+.
maven.yml, publish.yml y ci.yml.template usan Temurin 21.
@alefq
alefq merged commit e677f40 into jokoframework:develop Aug 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant