# 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 ```bash powershell -ExecutionPolicy Bypass -File verify-secrets.ps1 ``` **Sortie attendue:** ``` [OK] TOUS LES SECRETS SONT CORRECTEMENT CONFIGURES! ``` ### 2. Demarrer l'application ```bash 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:** ```properties # 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. ```bash powershell -ExecutionPolicy Bypass -File verify-secrets.ps1 ``` ### get-client-secret.ps1 Recupere le client secret depuis Keycloak. ```bash powershell -ExecutionPolicy Bypass -File get-client-secret.ps1 ``` ### configure-keycloak-jsf.ps1 Configure les redirect URIs dans Keycloak pour le port 8081. ```bash powershell -ExecutionPolicy Bypass -File configure-keycloak-jsf.ps1 ``` ### check-client-config.ps1 Verifie la configuration du client dans Keycloak. ```bash 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: ```properties 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 - [x] Verification des 3 secrets avec verify-secrets.ps1 - [x] Client Keycloak configure comme Confidential - [x] PKCE S256 active - [x] Redirect URIs incluent http://localhost:8081/* - [x] index.xhtml supprime pour interception OIDC - [x] Permissions HTTP configurees (seules ressources statiques publiques) - [x] 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! ```bash mvn quarkus:dev ``` Puis acceder a: **http://localhost:8081** ๐Ÿš€