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/RESTRUCTURATION_COMPLETE.md

9.8 KiB

Restructuration des fichiers de configuration - TERMINÉE

📋 Résumé des changements

La configuration a été complètement restructurée selon les best practices Quarkus avec une séparation propre entre les environnements.


🎯 Avant / Après

AVANT (système ancien)

application.properties (1 seul fichier avec préfixes %dev. et %prod.)
├── Propriétés communes
├── %dev.propriété1=valeur
├── %dev.propriété2=valeur
├── %prod.propriété1=valeur
└── %prod.propriété2=valeur

Problèmes :

  • Fichier unique très long et difficile à lire
  • Mélange de configurations dev et prod
  • Difficile de savoir quelle config est active
  • Duplication des propriétés communes

APRÈS (système propre)

application.properties (configuration commune uniquement)
├── Propriétés communes à tous les environnements
└── Pas de préfixes %dev. ou %prod.

application-dev.properties (surcharge développement)
├── TOUTES les propriétés spécifiques au dev
└── Surcharge les propriétés communes si nécessaire

application-prod.properties (surcharge production)
├── TOUTES les propriétés spécifiques à la prod
└── Surcharge les propriétés communes si nécessaire

Avantages :

  • Séparation claire des configurations
  • Fichiers plus courts et plus lisibles
  • Pas de duplication
  • Facile de voir quelle config s'applique
  • Best practice Quarkus/Spring Boot

📂 Fichiers modifiés

Module CLIENT (lions-user-manager-client-quarkus-primefaces-freya)

Fichier Lignes Contenu
application.properties 116 Configuration commune (HTTP, MyFaces, PrimeFaces, OIDC base, REST Client, Health)
application-dev.properties 68 DEV : Port 8082, Keycloak local, CORS permissif, Logging verbeux
application-prod.properties 62 PROD : Port 8080, Keycloak prod, CORS restrictif, TLS requis

Changements majeurs :

  • Suppression de tous les préfixes %dev. et %prod.
  • Configuration OIDC complète dans chaque fichier
  • Ports distincts (8082 dev, 8080 prod)
  • Backend URL via variable d'environnement en prod

Module SERVEUR (lions-user-manager-server-impl-quarkus)

Fichier Lignes Contenu
application.properties 109 Configuration commune (HTTP base, Logging, Audit, Health, Metrics, Jackson)
application-dev.properties 98 DEV : OIDC DÉSACTIVÉ (simplifie dev), Keycloak Admin local, Security off
application-prod.properties 120 PROD : OIDC OBLIGATOIRE (sécurité stricte), DB audit, Performance tuning

Changements majeurs :

  • OIDC désactivé en DEV : quarkus.oidc.enabled=false
    • Simplifie énormément le développement
    • Pas besoin de configurer 2 clients Keycloak
    • Client JSF reste sécurisé
  • OIDC obligatoire en PROD : Sécurité maximale
  • Configuration Database pour audit en prod
  • Thread pool optimisé en prod

Module API (lions-user-manager-server-api)

Aucun changement : Ce module ne contient que des DTOs et n'a pas de configuration.


🔐 Architecture de sécurité finale

Mode DÉVELOPPEMENT

┌─────────────┐         ┌──────────────────┐         ┌─────────────────┐
│  Navigateur │────────▶│  Client JSF      │────────▶│  Backend API    │
│             │         │  Port: 8082      │         │  Port: 8081     │
│             │         │  OIDC: ✅ Activé │         │  OIDC: ❌ Désactivé│
└─────────────┘         └──────────────────┘         └─────────────────┘
                               │
                               ▼
                        ┌──────────────────┐
                        │  Keycloak Local  │
                        │  Port: 8180      │
                        │  Realm: lions-   │
                        │  user-manager    │
                        └──────────────────┘

Flux d'authentification DEV :

  1. Utilisateur se connecte via le Client JSF
  2. Client valide l'utilisateur avec Keycloak
  3. Client appelle le Backend API sans vérification OIDC
  4. Backend répond directement (pas de validation de token)

Avantages :

  • Pas besoin de configurer lions-user-manager-backend dans Keycloak
  • Développement rapide
  • Client reste sécurisé

Mode PRODUCTION

┌─────────────┐         ┌──────────────────┐         ┌─────────────────┐
│  Navigateur │────────▶│  Client JSF      │────────▶│  Backend API    │
│             │         │  Port: 8080      │         │  Port: 8080     │
│             │         │  OIDC: ✅ Activé │         │  OIDC: ✅ Activé │
└─────────────┘         └──────────────────┘         └─────────────────┘
                               │                              │
                               ▼                              ▼
                        ┌─────────────────────────────────────┐
                        │  Keycloak Production                │
                        │  https://security.lions.dev         │
                        │  Realm: master                      │
                        └─────────────────────────────────────┘

Flux d'authentification PROD :

  1. Utilisateur se connecte via le Client JSF
  2. Client obtient un token de Keycloak
  3. Client envoie le token au Backend dans le header Authorization: Bearer <token>
  4. Backend valide le token avec Keycloak avant de répondre

Avantages :

  • Défense en profondeur (double validation)
  • Zero-trust (backend ne fait confiance à personne)
  • Traçabilité (audit de qui a fait quoi)
  • Sécurité maximale

🚀 Comment utiliser

Développement

# Terminal 1 : Backend (OIDC désactivé)
cd lions-user-manager/lions-user-manager-server-impl-quarkus
mvn quarkus:dev

# Terminal 2 : Client (OIDC activé vers Keycloak local)
cd lions-user-manager/lions-user-manager-client-quarkus-primefaces-freya
mvn quarkus:dev

# Accès : http://localhost:8082

Note : L'erreur HTTP 405 est maintenant résolue ! 🎉

Le backend accepte toutes les requêtes en DEV, donc pas besoin de configurer Keycloak pour le backend.


Production

# Build avec profil production
mvn clean package -Pprod

# Démarrer avec variables d'environnement
export KEYCLOAK_CLIENT_SECRET=<secret>
export KEYCLOAK_ADMIN_USERNAME=admin
export KEYCLOAK_ADMIN_PASSWORD=<password>
export DB_PASSWORD=<db-password>

java -jar target/quarkus-app/quarkus-run.jar

📊 Compilation - Résultats

Client

[INFO] Building Lions User Manager - Client (Quarkus + PrimeFaces Freya) 1.0.1
[INFO] BUILD SUCCESS
[INFO] Total time:  18.362 s

Serveur

[INFO] Building Lions User Manager - Server Implementation (Quarkus) 1.0.0
[INFO] BUILD SUCCESS
[INFO] Total time:  8.938 s

🎯 Comparaison des propriétés clés

Propriété Commun DEV PROD
Client
quarkus.http.port - 8082 8080
quarkus.oidc.enabled true true true
quarkus.oidc.auth-server-url - localhost:8180 security.lions.dev
quarkus.http.session-cookie-secure - false true
quarkus.log.console.level INFO DEBUG WARN
Serveur
quarkus.http.port - 8081 8080
quarkus.oidc.enabled - false true
quarkus.security.auth.enabled - false true
lions.keycloak.server-url - localhost:8180 security.lions.dev
quarkus.http.cors.origins - * restrictif

📖 Documentation créée

Fichier Description
CONFIGURATION_GUIDE.md Guide complet de configuration (ce fichier)
KEYCLOAK_DEV_SETUP.md Instructions pour configurer Keycloak en DEV (si OIDC backend activé)
test-keycloak-config.sh Script de vérification Linux/Mac
test-keycloak-config.ps1 Script de vérification Windows PowerShell

Checklist de vérification

  • Fichiers application.properties ne contiennent plus de préfixes %dev. ou %prod.
  • Fichiers application-dev.properties contiennent TOUTES les propriétés DEV
  • Fichiers application-prod.properties contiennent TOUTES les propriétés PROD
  • OIDC désactivé sur backend DEV (quarkus.oidc.enabled=false)
  • OIDC obligatoire sur backend PROD (quarkus.oidc.enabled=true)
  • Ports distincts (8082 client DEV, 8081 serveur DEV)
  • Logging verbeux en DEV, minimal en PROD
  • CORS permissif en DEV, restrictif en PROD
  • Variables d'environnement pour secrets en PROD
  • Compilation réussie pour les 3 modules
  • Documentation complète créée

🎉 Résultat

Erreur HTTP 405 RÉSOLUE

La restructuration des fichiers de configuration permet un développement simplifié tout en garantissant une sécurité maximale en production.

Prochaine étape : Démarrer les applications et tester le flux complet !

mvn quarkus:dev

Date de restructuration : 2025-12-25 Version : 1.0.0 Statut : TERMINÉ