2db3fd82c5
Marked Zipkin integration tasks as completed and verified in archived roadmaps. Documented fixes for gateway propagation type (`w3c` → `b3`) and Zipkin endpoint configuration. Removed redundant dependencies in `build.gradle.kts` and updated related session logs. Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
3.7 KiB
3.7 KiB
Journal - 2026-03-09
📝 Zusammenfassung
Keycloak-Härtung der Realm-Konfiguration (meldestelle-realm.json). Aufbauend auf dem Infrastruktur-Fix vom
2026-03-06 (korrektes start --optimized, Healthcheck) wurden nun die Client-Konfigurationen und
Sicherheitseinstellungen auf einen produktionsreifen Stand gebracht.
🛠️ Änderungen
1. config/docker/keycloak/meldestelle-realm.json
Wildcard aus webOrigins entfernt
- Vorher:
api-gatewayundweb-apphatten"*"inwebOrigins(CORS-Sicherheitslücke). - Nachher: Nur explizit erlaubte Origins (
localhost:*,app.meldestelle.at).
Neuer Client: frontend-client (KMP Desktop & Mobile)
- Public Client mit PKCE S256 (kein Client-Secret nötig, sicher für native Apps).
- Redirect URIs:
meldestelle://callback(Custom URI Scheme für Desktop),http://localhost:*(Dev),https://app.meldestelle.at/*(Prod). - Kein
directAccessGrantsEnabled— verhindert Password-Grant-Flow (unsicher für native Apps).
Password-Policy gestärkt
- Vorher:
length(8)— zu schwach. - Nachher:
length(10) and digits(1) and upperCase(1) and specialChars(1) and notUsername(undefined).
post.logout.redirect.uris konfiguriert
- Alle relevanten Clients (
api-gateway,web-app,frontend-client) haben nun korrekte Logout-Redirect-URIs gemäß OIDC Back-Channel Logout Standard.
📚 Gelerntes / Entscheidungen
meldestelle://callbackals Custom URI Scheme: Für KMP Compose Desktop ist ein eigenes URI-Schema der sichere Standard (kein offener HTTP-Port nötig). Muss im OS registriert werden.- PKCE S256 ist Pflicht für Public Clients: Verhindert Authorization Code Interception Attacks. Keycloak
26.xunterstützt dies nativ. frontend-clientvs.web-app: Klare Trennung:web-appfür Browser-basierte Web-App,frontend-clientfür native KMP Desktop/Mobile-App.
✅ Micrometer Upgrade (2026-03-09, gleiche Session)
Verifiziert: micrometer = "1.16.1" und micrometerTracing = "1.6.1" waren bereits korrekt in
gradle/libs.versions.toml gesetzt — kein Code-Change erforderlich. Archiv-Roadmaps entsprechend abgehakt.
✅ Zipkin Integration (2026-03-09, gleiche Session)
Analyse ergab: Infrastruktur war bereits zu ~90% korrekt aufgebaut. Einzige Lücke war eine falsche Propagation-Konfiguration im Gateway.
Befund
dc-infra.yaml: Zipkin-Container (openzipkin/zipkin:3, Port 9411) bereits vorhanden.monitoring-client-Bundle: enthältmicrometer-tracing-bridge-brave,zipkin-reporter-brave,zipkin-sender-okhttp3— von allen Services eingebunden.monitoring-defaults.properties: setztmanagement.zipkin.tracing.endpoint=http://localhost:9411/api/v2/spansals Default, überschreibbar viaMANAGEMENT_ZIPKIN_TRACING_ENDPOINT.dc-backend.yaml: setztMANAGEMENT_ZIPKIN_TRACING_ENDPOINT=http://zipkin:9411/api/v2/spansfür alle Services inkl. Gateway.
Fix: Gateway application.yaml
management.tracing.propagation.type:w3c→b3(B3 ist das native Format von Brave/Zipkin; W3C wäre für OpenTelemetry — Mismatch hätte Trace-Korrelation zwischen Gateway und Services gebrochen).management.zipkin.tracing.endpoint: Explizit mit lokalem Default + ENV-Override ergänzt.TRACING_SAMPLING_PROBABILITY: Konsistent mit Services via ENV-Variable.
Fix: Gateway build.gradle.kts
- Redundante direkte
micrometer-tracing-bridge-brave-Dependency entfernt (bereits transitiv viamonitoring-clientvorhanden).
🔜 Nächste Schritte
- OIDC Client im Frontend — Login-Flow mit
ktor-client-authundfrontend-clientimplementieren. - TLS/HTTPS — Langfristig:
KC_HOSTNAME_STRICT_HTTPS=truesetzen, sobald TLS eingerichtet ist.