182 lines
5.1 KiB
Markdown
182 lines
5.1 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Utiliser les scripts dans scripts/
|
|
pwsh scripts/setup-keycloak-client.ps1
|
|
```
|
|
|
|
### 3. Compiler le projet
|
|
|
|
```bash
|
|
mvn clean install -DskipTests
|
|
```
|
|
|
|
### 4. Lancer le serveur (port 8081)
|
|
|
|
```bash
|
|
cd lions-user-manager-server-impl-quarkus
|
|
mvn quarkus:dev -Dquarkus.profile=dev
|
|
```
|
|
|
|
### 5. Lancer le client (port 8082)
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# Tests unitaires seuls
|
|
mvn test
|
|
|
|
# Tests d'intégration
|
|
mvn verify
|
|
|
|
# Avec couverture JaCoCo
|
|
mvn verify -Pjacoco
|
|
```
|
|
|
|
## Production
|
|
|
|
### Variables d'environnement requises
|
|
|
|
```bash
|
|
# 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` :
|
|
|
|
```bash
|
|
# 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
|