163 lines
4.2 KiB
Markdown
163 lines
4.2 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
mvn quarkus:dev
|
|
```
|
|
|
|
Swagger UI disponible sur : `http://localhost:8081/q/swagger-ui`
|
|
|
|
### Configuration dev
|
|
|
|
Fichier : `src/main/resources/application-dev.properties`
|
|
|
|
```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
|
|
|
|
```bash
|
|
# Build standard (développement)
|
|
mvn clean package -DskipTests
|
|
|
|
# Build production
|
|
mvn clean package -P prod -DskipTests
|
|
```
|
|
|
|
---
|
|
|
|
## Déploiement (lionsctl)
|
|
|
|
```bash
|
|
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 prod` → `docker build -f Dockerfile.prod` → push `registry.lions.dev` → `kubectl apply` → health check
|
|
|
|
**URL prod** : `https://api.lions.dev/lions-user-manager`
|
|
|
|
---
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
# 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
|