Files
2026-02-18 16:15:48 +00:00

4.2 KiB

lions-user-manager-server-impl-quarkus

Backend REST Quarkus — Gestion des utilisateurs, rôles et realms via Keycloak Admin API

Dépôt Git

https://git.lions.dev/lionsdev/lions-user-manager-server-impl-quarkus


Responsabilités

  • Exposition d'une API REST sécurisée (OIDC)
  • Gestion CRUD des utilisateurs et rôles Keycloak via Admin API
  • Synchronisation des données entre Keycloak et PostgreSQL
  • Audit complet des actions (traçabilité en base)
  • Export / import CSV
  • Health checks, métriques Prometheus, Swagger UI

API REST

Ressource Path Description
Utilisateurs GET/POST/PUT/DELETE /api/users CRUD utilisateurs
Export CSV GET /api/users/export/csv Export utilisateurs au format CSV
Import CSV POST /api/users/import/csv Import en masse
Rôles GET/POST/DELETE /api/roles Gestion des rôles par realm
Audit GET /api/audit Consultation des logs
Analytics GET /api/audit/analytics/* Statistiques d'activité
Sync POST /api/sync Déclencher une synchronisation
Sync status GET /api/sync/status Dernier statut de sync
Sync check GET /api/sync/consistency Vérification de cohérence
Realms GET /api/realms Liste des realms autorisés
Assignments GET/POST/DELETE /api/realm-assignments Assignation realm/utilisateur

Documentation complète : https://api.lions.dev/lions-user-manager/q/swagger-ui


Stack

Composant Technologie
Framework Quarkus 3.17.8
API Quarkus REST (RESTEasy Reactive) + Jackson
Auth quarkus-oidc (Keycloak)
Admin quarkus-keycloak-admin-rest-client
ORM Hibernate ORM Panache
Base de données PostgreSQL 15
Migration Flyway
Health SmallRye Health
Métriques Micrometer + Prometheus
Docs SmallRye OpenAPI (Swagger UI)

Développement local

Prérequis

  • Java 17+, Maven 3.9+
  • Keycloak sur localhost:8180
  • PostgreSQL sur localhost:5432 (DB : lions_user_manager)

Démarrage

mvn quarkus:dev

Swagger UI disponible sur : http://localhost:8081/q/swagger-ui

Configuration dev

Fichier : src/main/resources/application-dev.properties

quarkus.http.port=8081
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/lions_user_manager
quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager

Configuration production

Fichier : src/main/resources/application-prod.properties

Toutes les valeurs sensibles sont passées via variables d'environnement :

Variable Description
DB_HOST Hôte PostgreSQL
DB_PORT Port (défaut : 5432)
DB_NAME Nom de la base (défaut : lions_user_manager)
DB_USERNAME Utilisateur PostgreSQL
DB_PASSWORD Mot de passe PostgreSQL
KEYCLOAK_AUTH_SERVER_URL URL du realm Keycloak
KEYCLOAK_SERVER_URL URL base Keycloak
KEYCLOAK_ADMIN_USERNAME Admin Keycloak
KEYCLOAK_ADMIN_PASSWORD Mot de passe admin Keycloak
CORS_ORIGINS Origines CORS autorisées

Build

# Build standard (développement)
mvn clean package -DskipTests

# Build production
mvn clean package -P prod -DskipTests

Déploiement (lionsctl)

lionsctl pipeline \
  -u https://git.lions.dev/lionsdev/lions-user-manager-server-impl-quarkus \
  -b main -j 17 -e production -c k1 -p prod

Pipeline : clone → mvn package -P proddocker build -f Dockerfile.prod → push registry.lions.devkubectl apply → health check

URL prod : https://api.lions.dev/lions-user-manager


Tests

# Unitaires
mvn test

# Intégration (Testcontainers)
mvn verify

Structure

src/main/java/dev/lions/user/manager/server/impl/
├── entity/          # Entités JPA (AuditLogEntity, SyncHistoryEntity, ...)
├── mapper/          # MapStruct mappers
├── repository/      # Repositories Panache
├── resource/        # Resources JAX-RS (UserResource, RoleResource, ...)
└── service/
    └── impl/        # Implémentations des services

Licence

Propriétaire — Lions Dev © 2025