Création de 2 écrans professionnels pour le module Devis:
1. devis/nouveau.xhtml:
- 4 sections: Informations générales, Détail du devis, Montants, Conditions
- Numéro auto-généré avec icône
- Statut avec 5 valeurs (BROUILLON, ATTENTE, ACCEPTE, REFUSE, EXPIRE)
- Dates d'émission et validité avec calendriers
- Client et objet du devis requis
- Placeholder pour lignes de devis (future développement)
- Calcul automatique TVA 18% et TTC
- Récapitulatif visuel HT/TVA/TTC avec composant monétaire
- Conditions de paiement et remarques (section collapsible)
- 3 boutons: Annuler, Brouillon, Envoyer
2. devis/details.xhtml:
- En-tête: numéro, statut, client, objet, dates
- Actions: Retour, Convertir en chantier, PDF, Modifier
- 4 KPI cards: Montant HT, TVA, TTC, Statut
- 6 onglets professionnels:
* Vue d'ensemble: infos + récap financier + actions rapides
* Détail des lignes: table lignes (placeholder)
* Conditions: paiement, délais, garanties
* Documents: GED associée (placeholder)
* Suivi: timeline actions
* Historique: modifications (placeholder)
Corrections:
- Fix navigation /factures/nouvelle -> /factures/nouveau (factures.xhtml)
- Fix menu /factures/nouvelle -> /factures/nouveau (menu.xhtml)
Tous les composants réutilisables utilisés (status-badge, monetary-display).
Validation complète côté client et serveur.
UI/UX professionnel adapté au métier BTP.
6.7 KiB
Configuration OIDC pour BTPXpress Client JSF
🎯 Statut: CONFIGURATION COMPLETE ET VALIDEE ✅
L'application BTPXpress Client JSF est maintenant correctement configuree pour l'authentification OIDC avec Keycloak.
🚀 Demarrage rapide
1. Verifier la configuration des secrets
powershell -ExecutionPolicy Bypass -File verify-secrets.ps1
Sortie attendue:
[OK] TOUS LES SECRETS SONT CORRECTEMENT CONFIGURES!
2. Demarrer l'application
mvn quarkus:dev
3. Acceder a l'application
Ouvrir dans un navigateur: http://localhost:8081
Comportement attendu:
- Redirection automatique vers
https://security.lions.dev - Page de connexion Keycloak
- Apres connexion, redirection vers le dashboard
4. Utilisateurs disponibles
admin@btpxpress.devdirecteur@btpxpress.devchef@btpxpress.devclient@entreprise.com
(Utiliser les mots de passe definis dans Keycloak)
📁 Fichiers de configuration
application.properties (Principal)
Fichier: src/main/resources/application.properties
Configuration OIDC complete:
# Serveur Keycloak
quarkus.oidc.auth-server-url=https://security.lions.dev/realms/btpxpress
quarkus.oidc.client-id=btpxpress-frontend
quarkus.oidc.application-type=web-app
# Client Secret
quarkus.oidc.credentials.secret=0Ph4e31lQQuonodmLQG3JycehbFL1Hei
# PKCE Configuration
quarkus.oidc.authentication.pkce-required=true
quarkus.oidc.authentication.pkce-secret=false
quarkus.oidc.authentication.state-secret=btpxpress-pkce-state-secret-32ch
# Redirection
quarkus.oidc.authentication.redirect-path=/dashboard.xhtml
# Token Encryption
quarkus.oidc.token-state-manager.encryption-secret=btpxpress-secure-cookie-encryption-key-32chars-2025
📚 Documentation disponible
| Fichier | Description |
|---|---|
| RESOLUTION_ERREURS_OIDC.md | Guide complet des erreurs rencontrees et solutions |
| OIDC_SECRETS_CONFIGURATION.md | Explication detaillee des 3 secrets OIDC |
| CORRECTIONS_OIDC.md | Historique des corrections appliquees |
| CONFIGURATION_KEYCLOAK_JSF.md | Guide de configuration Keycloak |
🔐 Les 3 secrets configures
| Secret | Longueur | Usage |
|---|---|---|
| Client Secret | 32 chars | Authentification avec Keycloak |
| State Secret | 32 chars | Encryption PKCE code verifier |
| Token Encryption | 51 chars | Encryption tokens dans cookies |
🛠️ Scripts PowerShell disponibles
verify-secrets.ps1
Verifie que tous les secrets sont correctement configures.
powershell -ExecutionPolicy Bypass -File verify-secrets.ps1
get-client-secret.ps1
Recupere le client secret depuis Keycloak.
powershell -ExecutionPolicy Bypass -File get-client-secret.ps1
configure-keycloak-jsf.ps1
Configure les redirect URIs dans Keycloak pour le port 8081.
powershell -ExecutionPolicy Bypass -File configure-keycloak-jsf.ps1
check-client-config.ps1
Verifie la configuration du client dans Keycloak.
powershell -ExecutionPolicy Bypass -File check-client-config.ps1
⚠️ Points importants
1. Secrets en production
NE JAMAIS commiter les secrets en production!
Utiliser des variables d'environnement:
quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET}
quarkus.oidc.authentication.state-secret=${OIDC_STATE_SECRET}
quarkus.oidc.token-state-manager.encryption-secret=${OIDC_TOKEN_ENCRYPTION_SECRET}
2. pkce-secret vs state-secret
IMPORTANT: Ne pas avoir les deux configures simultanement!
- Option A:
pkce-secret=true(utilise client secret) - NE PAS definir state-secret - Option B:
pkce-secret=false(utilise secret dedie) - DEFINIR state-secret ✅ (CHOISI)
3. Longueur des secrets
- Client Secret: Exactement 32 caracteres
- State Secret: Exactement 32 caracteres
- Token Encryption Secret: Minimum 32 caracteres (51 dans notre config)
🧪 Tests effectues
- Verification des 3 secrets avec verify-secrets.ps1
- Client Keycloak configure comme Confidential
- PKCE S256 active
- Redirect URIs incluent http://localhost:8081/*
- index.xhtml supprime pour interception OIDC
- Permissions HTTP configurees (seules ressources statiques publiques)
- Logs OIDC en mode DEBUG
🔄 Flux d'authentification
┌─────────────┐
│ Navigateur │
└──────┬──────┘
│
│ 1. GET http://localhost:8081
▼
┌─────────────┐
│ Quarkus │ OIDC intercepte (page protegee)
│ OIDC │ Generate PKCE + encrypt avec state-secret
└──────┬──────┘
│
│ 2. Redirect to Keycloak
▼
┌─────────────┐
│ Keycloak │ Page de connexion
│ security. │ Utilisateur se connecte
│ lions.dev │
└──────┬──────┘
│
│ 3. Redirect with auth code
▼
┌─────────────┐
│ Quarkus │ Decrypt PKCE verifier
│ OIDC │ Exchange code with client secret
│ │ Encrypt tokens with token-encryption-secret
└──────┬──────┘
│
│ 4. Redirect to dashboard
▼
┌─────────────┐
│ Dashboard │ ✅ AUTHENTIFIE!
└─────────────┘
🐛 Troubleshooting
L'application ne demarre pas
- Verifier les secrets avec
verify-secrets.ps1 - Verifier les logs dans la console
- S'assurer que Keycloak est accessible: https://security.lions.dev
Pas de redirection vers Keycloak
- Verifier que index.xhtml n'existe pas (doit etre supprime)
- Verifier les permissions HTTP dans application.properties
- Vider le cache du navigateur
Erreur "Authentication has failed"
- Verifier que l'utilisateur existe dans Keycloak
- Verifier les redirect URIs configurees dans Keycloak
- Verifier les logs DEBUG OIDC
Erreur "Secret key" ou "Both configured"
- Consulter RESOLUTION_ERREURS_OIDC.md
- Re-verifier les secrets avec verify-secrets.ps1
📞 Support
Pour toute question sur la configuration OIDC:
- Consulter RESOLUTION_ERREURS_OIDC.md pour les erreurs communes
- Consulter OIDC_SECRETS_CONFIGURATION.md pour comprendre les secrets
- Verifier les logs de l'application avec
quarkus.log.category."io.quarkus.oidc".level=DEBUG
🎉 Configuration realisee avec succes!
Date: 2025-11-07 Version Quarkus: 3.15.1 Keycloak: https://security.lions.dev Status: ✅ PRET POUR UTILISATION
L'application est maintenant prete a etre demarree et testee!
mvn quarkus:dev
Puis acceder a: http://localhost:8081 🚀