Aller au contenu

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).

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.

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.

  • 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.

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.

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.