2.7 KiB
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
issClaim. 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-urientsprach.
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
GlobalSecurityConfigeinJwtDecoderkonfiguriert, der auf die strikte Issuer-Prüfung verzichtet.
3. Security Hardening & Konsistenz
- CORS-Fix: Die
allowedHeadersim Gateway wurden auf*gesetzt, um Inkompatibilitäten mit Postman-Headern zu vermeiden. - Endpunkt-Konsistenz: Die Postman-Tests für
secure,sync(authentifiziert) undenhanced(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: NeuerResilienceReactiveJwtDecodermit deaktiviertem Issuer-Check.backend/infrastructure/security/src/main/kotlin/at/mocode/infrastructure/security/GlobalSecurityConfig.kt: ExpliziteJwtDecoderBean 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. 🟢