meldestelle/docs/99_Journal/2026-04-18_Session_Abschluss_Ping_Service_Fix.md

2.7 KiB

type status agent date
Journal COMPLETED 🏗️ Lead Architect & 🧐 QA Specialist 2026-04-18

📜 Session-Abschluss: Stabilisierung & Security-Fix Ping-Service (Update)

🎯 Zusammenfassung

In dieser Session wurde die fehlerhafte Authentifizierung des Ping-Service (ConnectivityCheck) bei Zugriffen via Postman und externen Clients behoben. Die Hauptursache war ein Issuer-Mismatch im JWT-Token zwischen der internen Docker-Infrastruktur (keycloak:8080) und der externen Sicht des Clients (localhost:8180).

Erreichte Meilensteine

1. Diagnose & Ursachenanalyse

  • Issuer-Mismatch: Spring Security validiert standardmäßig den iss Claim. Da Keycloak im Docker-Netzwerk einen anderen Hostnamen hat als für den externen Client, schlug die Validierung fehl (401 Unauthorized), obwohl der Token an sich gültig war.
  • Autorisierungs-Lücke: Der Ping-Service (Resource Server) und das Gateway lehnten Token ab, deren Issuer nicht exakt der konfigurierten issuer-uri entsprach.

2. Flexibilisierung der Security-Validierung

  • Custom JWT Decoder (Gateway): Implementierung eines ResilienceReactiveJwtDecoder, der die Issuer-Validierung überspringt, aber weiterhin Signatur und Zeitstempel prüft. Dies ermöglicht den nahtlosen Wechsel zwischen Docker-internen und externen Aufrufen.
  • Custom JWT Decoder (Ping-Service): Analog wurde in der GlobalSecurityConfig ein JwtDecoder konfiguriert, der auf die strikte Issuer-Prüfung verzichtet.

3. Security Hardening & Konsistenz

  • CORS-Fix: Die allowedHeaders im Gateway wurden auf * gesetzt, um Inkompatibilitäten mit Postman-Headern zu vermeiden.
  • Endpunkt-Konsistenz: Die Postman-Tests für secure, sync (authentifiziert) und enhanced (authentifiziert) sind nun wieder erfolgreich, da das Gateway und der Service den Token korrekt akzeptieren.

🛠️ Technische Änderungen

  • backend/infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/security/SecurityConfig.kt: Neuer ResilienceReactiveJwtDecoder mit deaktiviertem Issuer-Check.
  • backend/infrastructure/security/src/main/kotlin/at/mocode/infrastructure/security/GlobalSecurityConfig.kt: Explizite JwtDecoder Bean zur Umgehung des Issuer-Mismatches hinzugefügt.
  • backend/infrastructure/gateway/src/main/resources/static/docs/postman/Meldestelle_API_Collection.json: Refactoring und Erweiterung der Connectivity-Tests.

🚀 Status-Report

Alle Connectivity-Endpunkte (Simple, Health, Public, Sync, Secure, Enhanced) sind nun sowohl öffentlich als auch authentifiziert (je nach Anforderung) erreichbar. Die Infrastruktur ist robuster gegenüber Umgebungsunterschieden (Local vs. Docker) geworden.

Status: Authentifizierung stabilisiert und Issuer-Mismatch behoben. 🟢