Skip to content

5. Seguridad, flujo y convenciones

Arturo Lopez edited this page Apr 8, 2026 · 2 revisions

Seguridad:

  • Spring Security 6 con Kotlin DSL.
  • JWT stateless: filtro de autenticación, AuthenticationProvider.
  • Access tokens (24h) + Refresh tokens (7 días con rotación).
  • Roles: TRAINER, GYM_LEADER, PROFESOR_OAK — autorización con @PreAuthorize.
  • Endpoints públicos: actuator/health, Swagger en dev.
  • CORS configurado en config/WebConfig.kt.
  • Secret management via variables de entorno (nunca hardcodeado).

Buenas prácticas:

  • No usar sesiones (stateless).
  • Principio de menor privilegio.
  • Tests de seguridad con @WithMockUser.
  • JWT no cifra datos, solo los firma — nunca incluir contraseñas ni datos sensibles en el payload.

Migraciones:

  • Flyway: versionado de esquema, reproducibilidad.
  • Nombrado: V001__init.sql, V002__add_user_table.sql.

Flujo Git:

  • Branching: feature/, fix/, chore/.
  • Pull Requests con checklist:
    • Tests incluidos.
    • Documentación actualizada.
    • Endpoints documentados en Swagger.
    • No romper contratos públicos existentes.

Convenciones:

  • Kotlin style guide + KTLint para formateo automático.
  • Detekt para análisis estático de code smells.
  • Conventional Commits: feat: → minor release, fix: → patch release.

CI/CD:

  • GitHub Actions: build, test, lint en cada PR.
  • JaCoCo: cobertura mínima 85%.
  • SAST / Dependabot para vulnerabilidades.
  • Docker: imagen de la app + Docker Compose con PostgreSQL para desarrollo local.
  • Semantic-release para versioning automático basado en commits.

Clone this wiki locally