chore(build, docs): add security module and update infrastructure decisions

- Created `backend/infrastructure/security` module with standardized configurations for OAuth2, JWT validation, CORS, and role mapping.
- Updated ADRs to reflect resolved backend infrastructure decisions, including security standardization, persistence strategy, and Flyway schema location.
- Enabled integration of the `security` module into relevant projects (e.g., `ping-service` and `gateway`).
This commit is contained in:
2026-01-16 18:40:28 +01:00
parent 83954dfbba
commit 82f1e505c4
8 changed files with 216 additions and 57 deletions
@@ -22,6 +22,7 @@ dependencies {
implementation(projects.core.coreUtils)
implementation(projects.platform.platformDependencies)
implementation(projects.backend.infrastructure.monitoring.monitoringClient)
implementation(projects.backend.infrastructure.security) // NEU: Security Module
// === GATEWAY-SPEZIFISCHE ABHÄNGIGKEITEN ===
// Die WebFlux-Abhängigkeit wird jetzt korrekt durch das BOM bereitgestellt.
@@ -32,9 +33,17 @@ dependencies {
implementation(libs.spring.cloud.starter.gateway.server.webflux)
implementation(libs.spring.cloud.starter.consul.discovery)
implementation(libs.spring.boot.starter.actuator)
implementation(libs.spring.boot.starter.security)
implementation(libs.spring.boot.starter.oauth2.resource.server)
implementation(libs.spring.security.oauth2.jose)
// Security dependencies are now transitively provided by infrastructure.security,
// but Gateway is WebFlux, so we might need specific WebFlux security if the shared module is WebMVC only.
// However, starter-security works for both. Resource server might need check.
// For now, we keep explicit dependencies if they differ from the shared module or just rely on shared.
// Shared module has: starter-security, starter-oauth2-resource-server, jose, web.
// Gateway needs: starter-security, starter-oauth2-resource-server, jose.
// "web" (MVC) vs "webflux" (Reactive) conflict might occur if shared module pulls in MVC.
// CHECK: Shared module uses `implementation(libs.spring.web)`. This pulls in spring-webmvc usually?
// No, `spring-web` is common. `spring-boot-starter-web` pulls in MVC.
// The shared module build.gradle.kts uses `libs.spring.web`.
implementation(libs.spring.cloud.starter.circuitbreaker.resilience4j)
// Ergänzende Observability (Logging, Jackson)
@@ -16,6 +16,7 @@ tasks.jar {
}
dependencies {
implementation(platform(projects.platform.platformBom))
implementation(projects.core.coreUtils)
implementation(projects.core.coreDomain)
implementation(projects.platform.platformDependencies)
@@ -33,4 +34,12 @@ dependencies {
// Logging
implementation(libs.slf4j.api)
// Testing
testImplementation(projects.platform.platformTesting)
testImplementation(libs.bundles.testing.jvm)
}
tasks.test {
useJUnitPlatform()
}
@@ -0,0 +1,40 @@
plugins {
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinSpring)
alias(libs.plugins.spring.boot)
alias(libs.plugins.spring.dependencyManagement)
}
// Library module: do not create an executable Spring Boot jar here.
tasks.bootJar {
enabled = false
}
tasks.jar {
enabled = true
}
dependencies {
implementation(platform(projects.platform.platformBom))
implementation(projects.platform.platformDependencies)
// Spring Security & OAuth2
implementation(libs.spring.boot.starter.security)
implementation(libs.spring.boot.starter.oauth2.resource.server)
implementation(libs.spring.security.oauth2.jose)
// Web (for CORS config)
implementation(libs.spring.web)
// Utils
implementation(libs.slf4j.api)
implementation(libs.jackson.module.kotlin)
// Testing
testImplementation(projects.platform.platformTesting)
testImplementation(libs.spring.security.test)
}
tasks.test {
useJUnitPlatform()
}
@@ -19,8 +19,10 @@ dependencies {
// Our central BOM for consistent versions
implementation(platform(projects.platform.platformBom))
implementation(projects.platform.platformDependencies)
// NEU: Zugriff auf die verschobenen DatabaseUtils
// Infrastructure Modules
implementation(projects.backend.infrastructure.persistence)
implementation(projects.backend.infrastructure.security) // NEU: Security Module
// === Spring Boot & Cloud ===
// Standard dependencies for a secure microservice