ein wenig aufgeräumt

This commit is contained in:
stefan
2025-09-06 13:35:32 +02:00
parent dac0c691c8
commit 2dc6a06990
41 changed files with 1872 additions and 3153 deletions
@@ -134,7 +134,7 @@ class EnhancedLoggingFilter : GlobalFilter, Ordered {
class RateLimitingFilter : GlobalFilter, Ordered {
private val requestCounts = ConcurrentHashMap<String, RequestCounter>()
private val logger = org.slf4j.LoggerFactory.getLogger(RateLimitingFilter::class.java)
private val logger = LoggerFactory.getLogger(RateLimitingFilter::class.java)
// Timestamp der letzten Bereinigung
@Volatile
@@ -169,7 +169,7 @@ class RateLimitingFilter : GlobalFilter, Ordered {
val clientIp = getClientIp(request)
val path = request.path.value()
// Periodische Bereinigung des Caches zur Vermeidung von Memory Leaks
// Periodische Bereinigung des Caches zur Vermeidung von memory Leaks
performPeriodicCleanup()
val limit = determineRateLimit(request, path)
@@ -219,17 +219,17 @@ class RateLimitingFilter : GlobalFilter, Ordered {
private fun isAdminUser(request: ServerHttpRequest): Boolean {
// Sichere Rollenvalidierung basierend auf JWT-Authentifizierung
// Die X-User-Role wird vom JwtAuthenticationFilter nach erfolgreicher JWT-Validierung gesetzt
// die X-User-Role wird vom JwtAuthenticationFilter nach erfolgreicher JWT-Validierung gesetzt
val userRole = request.headers.getFirst("X-User-Role")
val userId = request.headers.getFirst("X-User-ID")
// Zusätzliche Sicherheitsprüfung: Beide Header müssen vorhanden sein
// Zusätzliche Sicherheitsprüfung: Beide Header müssen vorhanden sein.
// Dies reduziert die Wahrscheinlichkeit von Header-Spoofing
return userRole == "ADMIN" && userId != null
}
/**
* Bereinigt alte Einträge aus dem requestCounts Cache zur Vermeidung von Memory Leaks.
* Bereinigt alte Einträge aus dem requestCounts Cache zur Vermeidung von memory Leaks.
* Wird nur alle CLEANUP_INTERVAL_MS ausgeführt für bessere Performance.
*/
private fun performPeriodicCleanup() {
@@ -94,11 +94,13 @@ class GatewayMetricsConfig {
/**
* Bean für Request Counter - ermöglicht Request-Volumen Tracking.
* Hinweis: Dieser Counter wird nur als Fallback registriert.
* Die tatsächlichen Requests werden mit dynamischen Tags im WebFilter erfasst.
*/
@Bean
fun requestCounter(meterRegistry: MeterRegistry): Counter {
return Counter.builder(GATEWAY_REQUESTS_COUNTER)
.description("Gesamtanzahl der Gateway-Requests")
return Counter.builder("${GATEWAY_REQUESTS_COUNTER}_fallback")
.description("Gateway-Requests Fallback Counter")
.register(meterRegistry)
}
@@ -250,6 +250,13 @@ management:
enabled: true
java:
enabled: true
# Tracing-Konfiguration - Zipkin deaktiviert da kein Service verfügbar
tracing:
sampling:
probability: 0.0 # Deaktiviert Tracing komplett
zipkin:
tracing:
endpoint: "" # Leer um Zipkin zu deaktivieren
# Erweiterte Logging-Konfiguration
logging: