This repository has been archived on 2026-01-03. You can view files and clone it, but cannot push or open issues or pull requests.
Files
lions-user-manager/CONFIGURATION_GUIDE.md

326 lines
8.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Guide de Configuration - Lions User Manager
## 📋 Structure des fichiers de configuration
Les fichiers de configuration ont été restructurés selon les **best practices Quarkus** :
```
lions-user-manager/
├── lions-user-manager-client-quarkus-primefaces-freya/
│ └── src/main/resources/
│ ├── application.properties # Configuration commune
│ ├── application-dev.properties # Configuration DEV
│ └── application-prod.properties # Configuration PROD
├── lions-user-manager-server-impl-quarkus/
│ └── src/main/resources/
│ ├── application.properties # Configuration commune
│ ├── application-dev.properties # Configuration DEV
│ └── application-prod.properties # Configuration PROD
└── lions-user-manager-server-api/
└── (pas de configuration - module DTOs uniquement)
```
---
## 🎯 Principe de séparation
### ✅ Avant (ancien système avec préfixes)
```properties
# application.properties
quarkus.http.port=8080
%dev.quarkus.http.port=8082
%prod.quarkus.http.port=8080
```
### ✅ Après (nouveau système avec fichiers séparés)
**application.properties** (commun)
```properties
quarkus.http.host=0.0.0.0
```
**application-dev.properties**
```properties
quarkus.http.port=8082
```
**application-prod.properties**
```properties
quarkus.http.port=8080
```
---
## 📁 Détail des configurations
### 1⃣ lions-user-manager-client-quarkus-primefaces-freya
#### `application.properties` - Configuration commune
Contient :
- Configuration HTTP de base (host, session, cookies)
- Configuration MyFaces (JSF)
- Configuration PrimeFaces (thème, options)
- Configuration REST Client (timeouts, scope)
- Configuration OIDC de base (redirect path, scopes, rôles)
- Chemins publics/protégés
- Health checks et Metrics
#### `application-dev.properties` - Développement
Contient :
- **Port** : `8082`
- **Debug port** : `5006`
- **Logging** : DEBUG/TRACE
- **OIDC** : Keycloak local `http://localhost:8180/realms/lions-user-manager`
- **Backend URL** : `http://localhost:8081`
- **CORS** : Permissif (`localhost:8080,8081,8082`)
- **Cookies** : Non sécurisés (HTTP autorisé)
#### `application-prod.properties` - Production
Contient :
- **Port** : `8080`
- **Logging** : WARN/INFO
- **OIDC** : Keycloak production `https://security.lions.dev/realms/master`
- **Backend URL** : Variable d'environnement `${LIONS_USER_MANAGER_BACKEND_URL}`
- **CORS** : Restrictif (via `${CORS_ORIGINS}`)
- **Cookies** : Sécurisés (HTTPS uniquement)
- **TLS** : Vérification requise
---
### 2⃣ lions-user-manager-server-impl-quarkus
#### `application.properties` - Configuration commune
Contient :
- Configuration HTTP de base (CORS headers, methods)
- Type d'application OIDC : `service`
- Configuration Keycloak Admin (pool, timeouts, retry)
- Configuration Audit
- Configuration Logging (format, rotation)
- OpenAPI/Swagger metadata
- Health checks et Metrics
- Jackson (JSON)
#### `application-dev.properties` - Développement
**🔑 Point important : OIDC DÉSACTIVÉ en DEV**
Contient :
- **Port** : `8081`
- **Logging** : DEBUG/TRACE
- **OIDC** : `quarkus.oidc.enabled=false` ⚠️
- Simplifie le développement
- Le client JSF reste sécurisé
- Commentaires fournis pour réactiver si nécessaire
- **Security** : Désactivée (`quarkus.security.auth.enabled=false`)
- **Keycloak Admin** : Local `http://localhost:8180/realms/lions-user-manager`
- **CORS** : Permissif (`*`)
- **Realms autorisés** : `lions-user-manager,btpxpress,master,unionflow`
#### `application-prod.properties` - Production
**🔐 Point important : OIDC OBLIGATOIRE en PROD**
Contient :
- **Port** : `8080`
- **Logging** : INFO/WARN
- **OIDC** : `quarkus.oidc.enabled=true`
- Vérification TLS requise
- Token validation stricte
- Extraction des rôles
- **Security** : Activée et stricte
- `quarkus.security.auth.enabled=true`
- `quarkus.security.jaxrs.deny-unannotated-endpoints=true`
- **Keycloak Admin** : Production `https://security.lions.dev/realms/master`
- **Database** : PostgreSQL pour audit
- **Swagger** : Désactivé
- **Performance** : Thread pool optimisé (4-32 threads)
---
## 🚀 Utilisation
### Démarrage en mode DEV
```bash
# Backend (port 8081, OIDC désactivé)
cd lions-user-manager/lions-user-manager-server-impl-quarkus
mvn quarkus:dev
# Client (port 8082, OIDC activé vers Keycloak local)
cd lions-user-manager/lions-user-manager-client-quarkus-primefaces-freya
mvn quarkus:dev
```
**Accès** : http://localhost:8082
### Démarrage en mode PROD
```bash
# Backend
mvn clean package -Pprod
java -jar target/quarkus-app/quarkus-run.jar
# Client
mvn clean package -Pprod
java -jar target/quarkus-app/quarkus-run.jar
```
---
## 🔐 Architecture de sécurité
### Mode DEV (simplifié)
```
[Navigateur] → [Client JSF:8082] → [Backend API:8081]
↓ OIDC ✗ Pas d'OIDC
[Keycloak local]
```
**Avantages** :
- ✅ Développement rapide sans configuration Keycloak backend
- ✅ Client reste sécurisé (authentification utilisateur)
- ✅ Pas de conflit de realms
**Inconvénients** :
- ⚠️ Backend non sécurisé (localhost uniquement)
- ⚠️ Différent de la production
---
### Mode PROD (sécurisé)
```
[Navigateur] → [Client JSF:8080] → [Backend API:8080]
↓ OIDC ↓ OIDC
[Keycloak Production]
```
**Avantages** :
- ✅ Défense en profondeur (double validation)
- ✅ Traçabilité (qui a fait quoi)
- ✅ Zero-trust (backend ne fait confiance à personne)
- ✅ Best practice microservices
---
## ⚙️ Variables d'environnement requises en PROD
### Client
```bash
LIONS_USER_MANAGER_BACKEND_URL=https://api.lions.dev/user-manager
KEYCLOAK_AUTH_SERVER_URL=https://security.lions.dev/realms/master
KEYCLOAK_CLIENT_ID=lions-user-manager-client
KEYCLOAK_CLIENT_SECRET=<secret-du-client>
OIDC_ENCRYPTION_SECRET=<secret-32-chars-minimum>
CORS_ORIGINS=https://lions.dev,https://app.lions.dev
```
### Serveur
```bash
KEYCLOAK_CLIENT_SECRET=<secret-du-backend>
KEYCLOAK_ADMIN_USERNAME=admin
KEYCLOAK_ADMIN_PASSWORD=<mot-de-passe-admin>
KEYCLOAK_AUTHORIZED_REALMS=btpxpress,master,unionflow
DB_USERNAME=audit_user
DB_PASSWORD=<mot-de-passe-db>
DB_HOST=lions-db.lions.svc.cluster.local
DB_NAME=lions_audit
```
---
## 🔄 Réactiver OIDC en DEV (optionnel)
Si vous voulez tester le flow complet en développement :
### Étape 1 : Modifier `application-dev.properties` du serveur
```properties
# Commenter cette ligne:
# quarkus.oidc.enabled=false
# Décommenter ces lignes:
quarkus.oidc.enabled=true
quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager
quarkus.oidc.tls.verification=none
quarkus.oidc.token.issuer=http://localhost:8180/realms/lions-user-manager
quarkus.oidc.discovery-enabled=true
quarkus.oidc.token.audience=account
quarkus.oidc.verify-access-token=true
quarkus.oidc.roles.role-claim-path=realm_access/roles
quarkus.security.auth.enabled=true
```
### Étape 2 : Configurer Keycloak
Suivre le guide : `KEYCLOAK_DEV_SETUP.md`
---
## ✅ Vérification de la configuration
### Compilationdes modules
```bash
# Client
cd lions-user-manager/lions-user-manager-client-quarkus-primefaces-freya
mvn compile -DskipTests
# Serveur
cd lions-user-manager/lions-user-manager-server-impl-quarkus
mvn compile -DskipTests
```
### Test rapide
```bash
# Backend health check
curl http://localhost:8081/health
# Client (via navigateur)
http://localhost:8082
```
---
## 📊 Résumé des ports
| Module | DEV | PROD |
|--------|-----|------|
| **Client** | 8082 | 8080 |
| **Serveur** | 8081 | 8080 |
| **Keycloak** | 8180 | 443 |
---
## 🔧 Troubleshooting
### Erreur : "Propriété non trouvée"
✅ Vérifier que le profil est correct : `-Dquarkus.profile=dev` ou `-Pprod`
### Erreur : "Port already in use"
✅ Vérifier qu'un seul module tourne sur chaque port
### Erreur HTTP 405 en DEV
✅ Vérifier que OIDC est désactivé sur le backend DEV
### Erreur 401 en PROD
✅ Vérifier que les secrets Keycloak sont corrects
✅ Vérifier que les realms correspondent (client et serveur)
---
## 📖 Documentation complémentaire
- `KEYCLOAK_DEV_SETUP.md` - Configuration Keycloak pour DEV
- `test-keycloak-config.sh` - Script de vérification (Linux/Mac)
- `test-keycloak-config.ps1` - Script de vérification (Windows)
---
**Dernière mise à jour** : 2025-12-25
**Version** : 1.0.0