Files
btpxpress-frontend/README_OIDC_CONFIGURATION.md
dahoud ec38f6a23a feat: Module Devis professionnel avec écrans complets
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.
2025-11-08 10:49:19 +00:00

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:

  1. Redirection automatique vers https://security.lions.dev
  2. Page de connexion Keycloak
  3. Apres connexion, redirection vers le dashboard

4. Utilisateurs disponibles

  • admin@btpxpress.dev
  • directeur@btpxpress.dev
  • chef@btpxpress.dev
  • client@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

  1. Verifier les secrets avec verify-secrets.ps1
  2. Verifier les logs dans la console
  3. S'assurer que Keycloak est accessible: https://security.lions.dev

Pas de redirection vers Keycloak

  1. Verifier que index.xhtml n'existe pas (doit etre supprime)
  2. Verifier les permissions HTTP dans application.properties
  3. Vider le cache du navigateur

Erreur "Authentication has failed"

  1. Verifier que l'utilisateur existe dans Keycloak
  2. Verifier les redirect URIs configurees dans Keycloak
  3. Verifier les logs DEBUG OIDC

Erreur "Secret key" ou "Both configured"

  1. Consulter RESOLUTION_ERREURS_OIDC.md
  2. Re-verifier les secrets avec verify-secrets.ps1

📞 Support

Pour toute question sur la configuration OIDC:

  1. Consulter RESOLUTION_ERREURS_OIDC.md pour les erreurs communes
  2. Consulter OIDC_SECRETS_CONFIGURATION.md pour comprendre les secrets
  3. 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 🚀