fix(client): Correction configuration OIDC - résolution conflit pkce-secret/state-secret

- 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
This commit is contained in:
lionsdev
2025-12-05 16:23:23 +00:00
parent d99cded534
commit d77e07b05a
3 changed files with 97 additions and 53 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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}