2026-02-18 14:55:46 +00:00

Lions User Manager

Gestion centralisée des utilisateurs via Keycloak Admin API — Backend REST + Frontend JSF PrimeFaces Freya

Architecture

lions-user-manager/
├── pom.xml                                          # POM parent (multi-modules)
├── lions-user-manager-server-api/                   # Contrats API : DTOs, interfaces, enums
├── lions-user-manager-server-impl-quarkus/          # Serveur REST Quarkus + Keycloak Admin
├── lions-user-manager-client-quarkus-primefaces-freya/ # Client Web JSF + PrimeFaces Freya
└── scripts/                                         # Scripts DevOps (Keycloak, DB, Git)

Stack Technique

Composant Technologie Version
Runtime Java 17
Framework Quarkus 3.15.1
UI Framework PrimeFaces (Freya theme) 14.0.5
Auth Keycloak (OIDC + Admin API) 26.0.4
Base de données PostgreSQL + Hibernate ORM Panache
Migration DB Flyway
Build Maven
Tests JUnit 5, Mockito 5, Testcontainers, REST-Assured

Modules

server-api

Contrats partagés entre serveur et client :

  • DTOs : UserDTO, RoleDTO, AuditLogDTO, RealmAssignmentDTO, etc.
  • Interfaces Service : UserService, RoleService, AuditService, SyncService, RealmAuthorizationService
  • Enums : StatutUser, TypeRole, TypeActionAudit
  • Validations : ValidationConstants

server-impl-quarkus

API REST backend :

  • Resources : UserResource, RoleResource, AuditResource, RealmAssignmentResource, SyncResource, RealmResource
  • Services : Implémentations complètes avec gestion d'erreurs et audit
  • Keycloak Admin Client : Gestion des utilisateurs, rôles, realms via Keycloak Admin API
  • Health & Metrics : /health, /metrics (Prometheus), /q/swagger-ui
  • Audit : Traçabilité des actions sur table PostgreSQL

client-quarkus-primefaces-freya

Interface web admin :

  • Pages : Dashboard, Gestion Utilisateurs (CRUD), Rôles, Audit, Synchronisation, Realm Assignment
  • Beans JSF : DashboardBean, UserListBean, UserCreationBean, UserProfilBean, RoleGestionBean, AuditConsultationBean, etc.
  • REST Clients : Communication type-safe avec le serveur via MicroProfile REST Client
  • Thème : PrimeFaces Freya (enterprise dark/light)

Prérequis

  • Java 17+
  • Maven 3.9+
  • Docker Desktop (pour Keycloak et PostgreSQL)
  • Keycloak accessible sur localhost:8180
  • PostgreSQL accessible sur localhost:5432

Démarrage Rapide

1. Démarrer l'infrastructure

# Keycloak
docker run -d --name keycloak -p 8180:8080 \
  -e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
  -e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak:26.0.4 start-dev

# PostgreSQL
docker run -d --name postgres -p 5432:5432 \
  -e POSTGRES_USER=skyfile \
  -e POSTGRES_PASSWORD=skyfile \
  -e POSTGRES_DB=lions_user_manager_dev \
  postgres:16

2. Configurer Keycloak

# Utiliser les scripts dans scripts/
pwsh scripts/setup-keycloak-client.ps1

3. Compiler le projet

mvn clean install -DskipTests

4. Lancer le serveur (port 8081)

cd lions-user-manager-server-impl-quarkus
mvn quarkus:dev -Dquarkus.profile=dev

5. Lancer le client (port 8082)

cd lions-user-manager-client-quarkus-primefaces-freya
mvn quarkus:dev -Dquarkus.profile=dev

Ports

Service Port URL
Keycloak 8180 http://localhost:8180
Serveur API 8081 http://localhost:8081
Client Web 8082 http://localhost:8082
Swagger UI 8081 http://localhost:8081/q/swagger-ui
PostgreSQL 5432

Configuration

Chaque module utilise 3 fichiers de configuration Quarkus :

Fichier Rôle
application.properties Propriétés communes (tous environnements)
application-dev.properties Surcharges développement (ports, logging verbeux, Keycloak local)
application-prod.properties Surcharges production (env vars, TLS, logging minimal)

Tests

# Tests unitaires seuls
mvn test

# Tests d'intégration
mvn verify

# Avec couverture JaCoCo
mvn verify -Pjacoco

Production

Variables d'environnement requises

# Keycloak
KEYCLOAK_AUTH_SERVER_URL=https://security.lions.dev/realms/lions-user-manager
KEYCLOAK_SERVER_URL=https://security.lions.dev
KEYCLOAK_ADMIN_USERNAME=admin
KEYCLOAK_ADMIN_PASSWORD=<secret>
KEYCLOAK_CLIENT_ID=lions-user-manager-client

# Base de données
DB_HOST=<host>
DB_PORT=5432
DB_NAME=lions_user_manager
DB_USERNAME=<user>
DB_PASSWORD=<secret>

# Sécurité
OIDC_ENCRYPTION_SECRET=<32-char-secret>
CORS_ORIGINS=https://users.lions.dev

# Backend URL (pour le client)
LIONS_USER_MANAGER_BACKEND_URL=https://api.users.lions.dev

Docker

Chaque module déployable contient un Dockerfile.prod :

# Build natif
mvn package -Pnative -DskipTests

# Build Docker
docker build -f Dockerfile.prod -t lions-user-manager-server:1.0.0 .

Licence

Propriétaire — Lions Dev Team © 2025

Description
No description provided
Readme 3.7 MiB
Languages
Java 98.6%
PLpgSQL 1.3%