fix(backend): Keycloak-Admin-Token laeuft ab - FFP-SYNC-001 bei Leerlauf #82

Closed
opened 2026-06-22 17:37:09 +02:00 by niboer · 0 comments
Owner

Problem

Der Admin-Token in kcApi (keycloak-admin.ts) wird einmal beim Backend-Start geholt und unbegrenzt gecached (let adminToken). Nach Ablauf der Keycloak-Token-Lifetime (Default 1-5 Minuten) schlaegt jeder Admin-API-Call mit 401 fehl, was zu FFP-SYNC-001 und HTTP 502 fuehrt.

Schnellfix (wird sofort umgesetzt)

401-Retry in kcApi: Bei 401-Response wird adminToken invalidiert, ein neuer Token per Password-Grant geholt und der Request einmal wiederholt.

Produktionsfix (fuer spaeter)

Statt Password-Grant (grant_type=password mit Admin-User/Passwort) auf Client-Credentials-Grant umstellen:

  • Keycloak-Client ackend-admin mit Service Accounts Enabled anlegen
  • KEYCLOAK_ADMIN_CLIENT_ID + KEYCLOAK_ADMIN_CLIENT_SECRET in .env
  • getAdminToken nutzt grant_type=client_credentials`n- Kein Admin-Passwort mehr noetig, nur Client-ID + Secret
  • Client-Secret-TTL kann in Keycloak auf Jahre gesetzt werden
  • Erhoehte Sicherheit: Client-Credentials sind weniger maechtig als Admin-User

Umgebung

  • Betroffene Komponente: Backend (keycloak-admin.ts, keycloak-sync.ts)
## Problem Der Admin-Token in kcApi (keycloak-admin.ts) wird einmal beim Backend-Start geholt und unbegrenzt gecached (let adminToken). Nach Ablauf der Keycloak-Token-Lifetime (Default 1-5 Minuten) schlaegt jeder Admin-API-Call mit 401 fehl, was zu FFP-SYNC-001 und HTTP 502 fuehrt. ## Schnellfix (wird sofort umgesetzt) 401-Retry in kcApi: Bei 401-Response wird adminToken invalidiert, ein neuer Token per Password-Grant geholt und der Request einmal wiederholt. ## Produktionsfix (fuer spaeter) Statt Password-Grant (grant_type=password mit Admin-User/Passwort) auf Client-Credentials-Grant umstellen: - Keycloak-Client ackend-admin mit Service Accounts Enabled anlegen - KEYCLOAK_ADMIN_CLIENT_ID + KEYCLOAK_ADMIN_CLIENT_SECRET in .env - getAdminToken nutzt grant_type=client_credentials`n- Kein Admin-Passwort mehr noetig, nur Client-ID + Secret - Client-Secret-TTL kann in Keycloak auf Jahre gesetzt werden - Erhoehte Sicherheit: Client-Credentials sind weniger maechtig als Admin-User ### Umgebung - Betroffene Komponente: Backend (keycloak-admin.ts, keycloak-sync.ts)
Sign in to join this conversation.
No description provided.