# serveur_keycloak SSO / IAM **Keycloak** (distribution Quarkus) — hub d'authentification centralisée (OIDC/SAML) pour les services internes. ## Rôle - Installe un JRE, télécharge et extrait la distribution Keycloak dans `/opt/keycloak`. - Configure la **base PostgreSQL via le registre** `instance/plan/bases-donnees.yml` (entrée `keycloak`). - Publie derrière `serveur_nginx` (TLS à l'edge) : `hostname`, `proxy-headers=xforwarded`, `http-enabled=true`. - Secrets (mot de passe BD + admin bootstrap) dans `/etc/keycloak/keycloak.env` (`0640`, `no_log`). - `kc.sh build --db=postgres` (une fois par version) puis service systemd `start --optimized`. ## Premier consommateur du registre de BD L'entrée `keycloak` de `instance/plan/bases-donnees.yml` fait que : 1. `serveur_postgresql` crée la base `keycloak` + le compte propriétaire `keycloak`. 2. Ce rôle lit **la même entrée** pour bâtir sa connexion (`db-url-database`, `db-username`, mot de passe = `vault_bd_keycloak`). Mot de passe partagé, source unique. Dépendance `serveur_keycloak requiert serveur_postgresql actif` déjà dans `docs/dependances-groupes.yml`. ## Secrets requis (Vault) ```yaml serveur_keycloak_admin_password: "{{ vault_keycloak_admin }}" # admin bootstrap vault_bd_keycloak: "..." # mot de passe BD (partage avec postgres) ``` ## Variables principales | Variable | Défaut | Rôle | | --- | --- | --- | | `serveur_keycloak_version` | `26.0.7` | Version (à vérifier/bumper sur keycloak.org/downloads) | | `serveur_keycloak_hostname` | `keycloak.exemple.internal` | Hostname public (via nginx) | | `serveur_keycloak_db_host` | `10.0.13.11` | IP de data-01 (serveur_postgresql) | | `serveur_keycloak_admin_user` | `admin` | Admin bootstrap | | `serveur_keycloak_login_theme` | `""` | Thème de login du realm (vide = défaut Keycloak) | | `serveur_keycloak_account_theme` | `""` | Thème de la console de compte | | `serveur_keycloak_theme_cache` | `true` | Cache des ressources de thème (`true`=prod/perf, `false`=lab/itération) | ## Thème (identité Alliance Boréale) Un thème `alliance-boreale` (dans `files/themes/`) applique l'identité visuelle du site de l'Alliance : **ciel nocturne aurore + constellation animée**, cartes en verre, accents aurore, logo étoile, police système. Il couvre le **login** (`login/`) et la **console de compte** (`account/`). **Comment ça marche :** - `theme.properties` : `parent=keycloak` (login) / `parent=keycloak.v3` (account) + `styles=` (CSS) + `scripts=` (la constellation JS). C'est un **calque CSS/JS** posé sur la structure PatternFly de Keycloak. - Déployé dans `{{ serveur_keycloak_home }}/themes/` (copie **inconditionnelle, à chaque déploiement**, *après* l'extraction de Keycloak) et appliqué au realm via `kcadm -s loginTheme/accountTheme`. - `serveur_keycloak_theme_cache: false` (lab) sert les ressources en `no-cache` — sinon Keycloak les marque « immuables » et le navigateur garde l'ancien CSS **même en `Ctrl+Shift+R`** (piège classique ; utiliser une fenêtre privée pour vérifier un changement). - Le JS de constellation s'initialise sur `DOMContentLoaded` (Keycloak injecte le `