ADR 0034 – keycloak-config-cli pour appliquer le royaume Keycloak
Statut : Décidée. Date : 30/09/2026. Applique la page « Configuration Keycloak » (§1) et la page « multi-clients » (§7).
Contexte
Section intitulée « Contexte »La configuration de Keycloak (royaume, clients, flux de connexion, durées de session) porte la sécurité de tous les clients. Elle doit être relue, rejouée à l’identique en développement, recette et production, et ne jamais être modifiée à la main. Une erreur touche tous les clients du royaume unique.
Décision
Section intitulée « Décision »Le royaume est décrit dans infra/keycloak/realm/biotrace.json, appliqué par keycloak-config-cli (Apache 2.0), image adorsys/keycloak-config-cli épinglée sur la version de Keycloak (6.5.1-26.0.5). L’application est idempotente : la rejouer ne change rien. Les valeurs propres à un environnement (adresse du back-office, secret du client API) sont des variables, dans infra/keycloak/environnements/, le secret étant fourni par le pipeline. Le script infra/keycloak/appliquer.sh est le seul point d’entrée.
L’outil ne sert qu’à l’infrastructure : il n’est ni dans l’API ni dans les applications.
Alternatives écartées
Section intitulée « Alternatives écartées »- Import natif de Keycloak (
--import-realm, partial import) : n’applique qu’à la création du royaume ou écrase des éléments ; pas de mise à jour incrémentale ni de substitution de variables. Inadapté à un royaume qui évolue. - Scripts
kcadm.sh: une suite de commandes impératives à maintenir, sans état attendu ni comparaison. On retomberait sur de la configuration manuelle déguisée. - Terraform (fournisseur Keycloak) : demande un outil et un état supplémentaires que le projet n’utilise pas par ailleurs.
Conséquences
Section intitulée « Conséquences »Un conteneur de plus dans le pipeline d’infrastructure, lié à la version de Keycloak : on change les deux ensemble. Le royaume est relu en demande de fusion, et les tests KC tournent après chaque changement (job keycloak de l’intégration continue).
Mise à jour du 30/09/2026. Le royaume déclare désormais deux clients de service : biotrace-api (utilisateurs et groupes) et biotrace-api-organisations (manage-realm, réservé aux organisations, EC-042). Chacun a son secret, fourni par le pipeline hors développement.
Stratégie de sortie
Section intitulée « Stratégie de sortie »Le fichier du royaume est au format de représentation standard de Keycloak : il s’importe aussi avec l’import natif. On remplace l’outil sans réécrire la configuration.