2025-10-27 18:22:51 +01:00
2025-09-12 15:05:19 +02:00
2025-08-28 16:07:04 +02:00
2023-12-19 16:58:49 +01:00
2025-10-27 18:22:51 +01:00
2025-09-12 15:05:19 +02:00

KEYCLOAK (upgrade from 16.x to 26)

Ce projet est pour upgrader Keycloak (déployé via Docker) de la version 16 vers la version 26 ou ultérieur

Les versions antérieures à keycloak utilisaient Wildfly, J2EE lourd. depuis la 17.x Keycloak utilise Quarkus un framework adapté au applis conteneurisée et plus léger.

PRE-REQUIS

  • Docker + compose
  • Base de donnée LDAP (fichier .mdb)
  • Export d'un realm (format json)

UTILISATION

  • Editer les variables dans le .env
nano .env

Modifier les mots de passe pour la base de données et keycloak ainsi que le domaine, l'adresse email, l'administrateur, etc

docker compose up -d

UPGRADE PROCESS (from v16 to v26)

Pour upgrader keycloak, il faut:

  1. exporter la base de données utilisateurs (LDAP)
  2. exporter la base de données de keycloak
  3. exporter le realm garagenum en json
  4. démarrer la nouvelle version de keycloak (créer l'admin définitif et supprimer le temporaire)
  5. importer le realm de l'export json
  6. importer la base de données ldap
  7. importer la base de données pg
  8. Configurer le realm garagenum pour utiliser le ldap
  9. synchroniser LDAP avec keycloak
  10. recréer les secrets des clients (et les mettres à jour côté clients)

EXPORT LDAP DATABASE (USERS)

Pour upgrader keycloak, il faut:

  • exporter la base de données utilisateurs (LDAP)
# Se connecter au terminal du conteneur ldap
docker exec -it ancien-ldap bash
# Exporter la base de données
slapcat -n 1 -l /tmp/backup.ldif
# Récupérer le fichier d'export sur la machine hôte
docker cp ancien-ldap:/tmp/backup.ldif .
  • exporter les clients du realm

💀 Les secrets ne seront pas récupérés (*******) donc à persister avant ou idéalement recréer

EXPORTER LA BASE DE DONNÉES KEYCLOAK

docker exec <keycloak_db_container> pg_dump -U <db_user> <dn_name> > kc_db_backup.sql

On obtient un fichier que l'on va pouvoir importer dans la nouvelle base de donnée keycloak

EXPORTER LE REALM

export-realm

Cocher groups / roles et clients

DEMARRER LA NOUVELLE VERSION

docker compose up -d

IMPORTER LE REALM

  • Clean authorizationSettings blocs in export-realm.json

Utiliser le fichier json de l'export une fois néttoyé pour importer les configs du realm

import-realm

  • Redémarrer keycloak en mode production (Dockerfile.prod dans le compose.yml)

IMPORTER BASE DE DONNÉES KEYCLOAK

Placer le fichier de backup de la BDD de keycloak dans le dossier persisté ./init-scripts

Vérifier les logs au démarrage pour vérifier que l'import de la base de données à été bien faite.

IMPORTER DATABASE LDAP (USERS)

  • importer la base de données de keycloak-openldap:
# Copier la backup ldif
docker cp backup.ldif keycloak-openldap:/tmp/backup.ldif
# Se connecter au terminal du conteneur ldap
docker exec -it keycloak-openldap bash
# Arrêter le service slapd 
service slapd stop
# Supprimer la DB actuelle
rm -rf /var/lib/ldap/*
# Ajouter le LDIF
slapadd -n 1 -F /etc/ldap/slapd.d -l /tmp/backup.ldif
# Ajuster les permissions
chown -R openldap:openldap /var/lib/ldap
# Redémarrer slapd
service slapd start

c'est là que sont les users !

CONFIGURER LE REALM POUR UTILISER LDAP

  • Dans le menu de gauche, cliquer sur Regroupement Utilisateur, puis sur ldap
  • Configurer l'accès au service LDAP (voir captures d'écran)
Captures d'écran

ldap-1

ldap-2

ldap-3

ldap-4

  • Tester la connexion pour s'assurer que keycloak arrive à se connecter au service LDAP

SECURISER LE LDAP (si besoin de l'exposer sur l'extérieur)

FAIL2BAN JAIL FOR LDAP (TO DO)

  • /etc/fail2ban/filter.d/slapd.conf
[Definition]
failregex = .*slapd.*do_bind: invalid credentials.*
ignoreregex =
  • /etc/fail2ban/jail.local
[slapd]
enabled  = true
filter   = slapd
backend  = systemd
logpath  = /var/log/syslog
maxretry = 5
bantime  = 3600
findtime = 600
port     = ldap,ldaps

Si seul le service keycloak utilise le service LDAP, commenter l'exposition des ports du service LDAP dans le compose.yml

Description
Identity provider for SSO into your services
Readme 596 KiB