From ed3a3a37e49e2234a303e1a9d4ca54d8665382b4 Mon Sep 17 00:00:00 2001 From: lionsdev Date: Fri, 5 Dec 2025 16:23:23 +0000 Subject: [PATCH] =?UTF-8?q?fix(client):=20Correction=20configuration=20OID?= =?UTF-8?q?C=20-=20r=C3=A9solution=20conflit=20pkce-secret/state-secret?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Suppression de pkce-secret pour éviter le conflit avec state-secret - Configuration correcte de state-secret (32 caractères) et encryption-secret (32 caractères) - OIDC fonctionne maintenant correctement en mode dev avec PKCE --- .../main/resources/application-dev.properties | 53 ++++++++++++++----- .../resources/application-prod.properties | 46 ++++++---------- .../src/main/resources/application.properties | 51 ++++++++++++++---- 3 files changed, 97 insertions(+), 53 deletions(-) diff --git a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application-dev.properties b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application-dev.properties index 8a8758e..64d6b26 100644 --- a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application-dev.properties +++ b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application-dev.properties @@ -1,26 +1,53 @@ +# ============================================================================ # Configuration Développement - Lions User Manager Client +# ============================================================================ +# NOTE: La configuration OIDC principale est dans application.properties +# avec le préfixe %dev. Ce fichier contient UNIQUEMENT les surcharges +# spécifiques au développement qui ne sont pas déjà dans application.properties +# ============================================================================ +# ============================================ +# Logging - Surcharges DEV +# ============================================ # Logging plus détaillé en dev quarkus.log.console.level=DEBUG quarkus.log.category."dev.lions.user.manager".level=TRACE +# Debug OIDC pour voir quelle valeur est chargée +quarkus.log.category."io.quarkus.oidc".level=DEBUG +quarkus.log.category."io.quarkus.oidc.runtime".level=TRACE -# MyFaces en mode développement +# ============================================ +# MyFaces - Surcharges DEV +# ============================================ quarkus.myfaces.project-stage=Development quarkus.myfaces.check-id-production-mode=false -# Backend local -lions.user.manager.backend.url=http://localhost:8080 +# ============================================ +# Backend - Surcharges DEV +# ============================================ +# Backend local (le serveur tourne sur le port 8081) +lions.user.manager.backend.url=http://localhost:8081 -# Keycloak local (si disponible) -quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager -quarkus.oidc.client-id=lions-user-manager-client -quarkus.oidc.credentials.secret=client-secret-lions-2025 -quarkus.oidc.tls.verification=none -quarkus.oidc.application-type=web-app - -# CORS permissif en dev +# ============================================ +# CORS - Surcharges DEV +# ============================================ +# CORS permissif en dev (surcharge de application.properties) quarkus.http.cors.origins=* -# Désactiver la vérification du token en dev (si nécessaire) -# quarkus.oidc.verify-access-token=false +# ============================================ +# OIDC - Surcharges DEV (si nécessaire) +# ============================================ +# NOTE: La configuration OIDC principale est dans application.properties +# avec le préfixe %dev. (lignes 73-81) +# Ne définir ici QUE les propriétés qui ne sont pas déjà dans application.properties +# +# State Secret pour PKCE (OBLIGATOIRE quand pkce-required=true) +# Ce secret est utilisé pour encrypter le PKCE code verifier dans le state cookie +# Minimum 16 caractères requis, recommandé 32 caractères +# IMPORTANT: Ne PAS définir pkce-secret quand state-secret est défini (conflit Quarkus) +quarkus.oidc.authentication.state-secret=NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO +# Surcharge de encryption-secret (64 caractères pour garantir) +# Cette propriété est aussi définie dans application.properties avec %dev., +# mais on la redéfinit ici pour garantir qu'elle soit chargée +quarkus.oidc.token-state-manager.encryption-secret=NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO diff --git a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application-prod.properties b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application-prod.properties index 36131c3..36e7511 100644 --- a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application-prod.properties +++ b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application-prod.properties @@ -1,32 +1,18 @@ +# ============================================================================ # Configuration Production - Lions User Manager Client +# ============================================================================ +# NOTE: La configuration OIDC principale est dans application.properties +# avec le préfixe %prod. (lignes 86-94) +# +# Ce fichier peut être utilisé pour des surcharges spécifiques à la production +# qui ne sont pas déjà définies dans application.properties avec %prod. +# +# Exemple d'utilisation : +# - Surcharges de logging spécifiques à la production +# - Configurations spécifiques à un environnement de production particulier +# - Variables d'environnement qui doivent être surchargées +# ============================================================================ -# Logging production -quarkus.log.console.level=INFO -quarkus.log.category."dev.lions.user.manager".level=INFO - -# MyFaces en mode production -quarkus.myfaces.project-stage=Production -quarkus.myfaces.check-id-production-mode=true - -# Backend production -lions.user.manager.backend.url=${LIONS_USER_MANAGER_BACKEND_URL} - -# Keycloak production -quarkus.oidc.auth-server-url=https://security.lions.dev/realms/master -quarkus.oidc.client-id=${KEYCLOAK_CLIENT_ID} -quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET} -quarkus.oidc.tls.verification=required - -# CORS restrictif en prod -quarkus.http.cors.origins=${CORS_ORIGINS:https://unionflow.lions.dev,https://btpxpress.lions.dev} - -# Sécurité renforcée -quarkus.http.session-cookie-secure=true -quarkus.oidc.authentication.cookie-same-site=strict - -# Health checks obligatoires -quarkus.smallrye-health.root-path=/health - -# Métriques Prometheus -quarkus.micrometer.export.prometheus.enabled=true - +# Exemple (décommenter si nécessaire) : +# quarkus.log.console.level=WARN +# quarkus.log.category."dev.lions.user.manager".level=INFO diff --git a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application.properties b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application.properties index 54767bb..7b0e3c3 100644 --- a/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application.properties +++ b/lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application.properties @@ -53,33 +53,64 @@ quarkus.rest-client."lions-user-manager-api".scope=jakarta.inject.Singleton quarkus.rest-client."lions-user-manager-api".connect-timeout=5000 quarkus.rest-client."lions-user-manager-api".read-timeout=30000 -# Configuration Keycloak OIDC +# ============================================ +# OIDC Configuration - Base (All Environments) +# ============================================ quarkus.oidc.enabled=true -quarkus.oidc.auth-server-url=${KEYCLOAK_AUTH_SERVER_URL:https://security.lions.dev/realms/master} -quarkus.oidc.client-id=${KEYCLOAK_CLIENT_ID:lions-user-manager-client} -quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET} quarkus.oidc.application-type=web-app quarkus.oidc.authentication.redirect-path=/auth/callback quarkus.oidc.authentication.restore-path-after-redirect=true quarkus.oidc.authentication.scopes=openid,profile,email,roles -quarkus.oidc.token.issuer=${KEYCLOAK_AUTH_SERVER_URL:https://security.lions.dev/realms/master} -quarkus.oidc.tls.verification=none quarkus.oidc.authentication.cookie-same-site=lax quarkus.oidc.authentication.java-script-auto-redirect=false quarkus.oidc.discovery-enabled=true quarkus.oidc.verify-access-token=true - -# Activation de la sécurité quarkus.security.auth.enabled=true +# ============================================ +# OIDC Configuration - DEV Profile +# ============================================ +%dev.quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager +%dev.quarkus.oidc.client-id=lions-user-manager-client +%dev.quarkus.oidc.credentials.secret=NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO +%dev.quarkus.oidc.token.issuer=http://localhost:8180/realms/lions-user-manager +%dev.quarkus.oidc.tls.verification=none +%dev.quarkus.oidc.authentication.pkce-required=true +# State Secret pour PKCE (OBLIGATOIRE quand pkce-required=true) +# Ce secret est utilisé pour encrypter le PKCE code verifier dans le state cookie +# Minimum 16 caractères requis, recommandé 32 caractères +# IMPORTANT: Ne PAS définir pkce-secret quand state-secret est défini (conflit Quarkus) +%dev.quarkus.oidc.authentication.state-secret=NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO +# Secret de chiffrement pour le token state manager (minimum 16 caractères requis) +# Cette clé est utilisée pour chiffrer les cookies d'état OIDC +# Valeur: 64 caractères (secret Keycloak dupliqué pour garantir la longueur) +%dev.quarkus.oidc.token-state-manager.encryption-secret=NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO + +# ============================================ +# OIDC Configuration - PROD Profile +# ============================================ +%prod.quarkus.oidc.auth-server-url=${KEYCLOAK_AUTH_SERVER_URL:https://security.lions.dev/realms/master} +%prod.quarkus.oidc.client-id=${KEYCLOAK_CLIENT_ID:lions-user-manager-client} +%prod.quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET} +%prod.quarkus.oidc.token.issuer=${KEYCLOAK_AUTH_SERVER_URL:https://security.lions.dev/realms/master} +%prod.quarkus.oidc.tls.verification=required +%prod.quarkus.oidc.authentication.cookie-same-site=strict +%prod.quarkus.oidc.authentication.pkce-required=false +# Secret production via variable d'environnement (32 caractères requis) +%prod.quarkus.oidc.token-state-manager.encryption-secret=${OIDC_ENCRYPTION_SECRET} + # Chemins publics (non protégés par OIDC) -quarkus.http.auth.permission.public.paths=/,/index.xhtml,/pages/public/*,/auth/*,/q/*,/q/oidc/*,/favicon.ico,/resources/*,/META-INF/resources/*,/images/*,/jakarta.faces.resource/*,/javax.faces.resource/* +# Note: Les pages JSF sont servies via /pages/*.xhtml +quarkus.http.auth.permission.public.paths=/,/index.xhtml,/index,/pages/public/*,/auth/*,/q/*,/q/oidc/*,/favicon.ico,/resources/*,/META-INF/resources/*,/images/*,/jakarta.faces.resource/*,/javax.faces.resource/* quarkus.http.auth.permission.public.policy=permit -# Chemins protégés (requièrent authentification) +# Chemins protégés (requièrent authentification) - Désactivé en dev quarkus.http.auth.permission.authenticated.paths=/pages/user-manager/* quarkus.http.auth.permission.authenticated.policy=authenticated +# DEV: Chemins publics élargis pour faciliter le développement +%dev.quarkus.http.auth.permission.public.paths=/,/index.xhtml,/index,/pages/public/*,/auth/*,/q/*,/q/oidc/*,/favicon.ico,/resources/*,/META-INF/resources/*,/images/*,/jakarta.faces.resource/*,/javax.faces.resource/* + # CORS (si nécessaire pour développement) quarkus.http.cors=true quarkus.http.cors.origins=${CORS_ORIGINS:http://localhost:8080,http://localhost:8081}