Migration du frontend React/Next.js vers Quarkus + PrimeFaces Freya 5.0.0 Dashboard: - Extension de BtpXpressApiClient avec tous les endpoints dashboard - Création de DashboardService pour récupérer les données API - Refactorisation DashboardView : uniquement données réelles de l'API - Restructuration dashboard.xhtml avec tous les aspects métiers BTP - Suppression complète de toutes les données fictives Topbar: - Amélioration du menu profil utilisateur avec header professionnel - Ajout UserSessionBean pour gérer les informations utilisateur - Styles CSS personnalisés pour une disposition raffinée - Badges de notifications conditionnels Configuration: - Intégration du thème Freya 5.0.0-jakarta - Configuration OIDC pour Keycloak (security.lions.dev) - Gestion des erreurs HTTP 431 (headers size) - Support du format Fcfa avec séparateurs d'espaces Converters: - Création de FcfaConverter pour formater les montants en Fcfa avec espaces (x xxx xxx format) Code Quality: - Code entièrement documenté en français avec Javadoc exemplaire - Respect du principe Java 'Write once, use many times' - Logging complet pour le débogage - Gestion d'erreurs robuste
2.5 KiB
2.5 KiB
Solution pour l'erreur HTTP 431 "Request Header Fields Too Large"
Problème
L'erreur 431 se produit lorsque les en-têtes HTTP (notamment les cookies contenant les tokens OIDC/JWT) dépassent la taille maximale autorisée.
Solutions appliquées
1. Configuration Quarkus HTTP
quarkus.http.max-headers-size=64K
quarkus.vertx.max-headers-size=64K
2. Optimisation OIDC Token Management
quarkus.oidc.token-state-manager.split-tokens=true
quarkus.oidc.token-state-manager.strategy=id-refresh-tokens
quarkus.oidc.token-state-manager.encryption-required=false
quarkus.oidc.token-state-manager.cookie-max-size=8192
Ces configurations :
- split-tokens : Divise les tokens en plusieurs cookies pour éviter qu'un seul cookie soit trop volumineux
- id-refresh-tokens : Utilise une stratégie optimisée avec refresh tokens
- encryption-required=false : Désactive l'encryption pour réduire la taille (développement uniquement)
- cookie-max-size=8192 : Limite la taille d'un cookie individuel à 8KB
Actions à effectuer
⚠️ IMPORTANT : Supprimer les cookies du navigateur
Les cookies existants peuvent être trop volumineux. Vous devez :
- Ouvrir les outils développeur (F12)
- Onglet Application > Cookies
- Supprimer tous les cookies pour
http://localhost:8081 - Redémarrer l'application Quarkus
- Recharger la page
Ou via la console du navigateur :
// Supprimer tous les cookies pour localhost:8081
document.cookie.split(";").forEach(c => {
document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/");
});
Redémarrer l'application
Après modification de application.properties, vous devez redémarrer l'application Quarkus :
# Arrêter l'application (Ctrl+C)
# Puis relancer
mvn quarkus:dev
Vérification
Une fois les cookies supprimés et l'application redémarrée :
- Accédez à http://localhost:8081/dashboard.xhtml
- Vous serez redirigé vers Keycloak pour l'authentification
- Après authentification, les nouveaux cookies (optimisés) seront créés
Si le problème persiste
-
Augmenter encore la limite :
quarkus.http.max-headers-size=128K quarkus.vertx.max-headers-size=128K -
Vérifier dans Keycloak que le client
btpxpress-frontendn'a pas trop de claims/roles qui gonflent le token -
Mode navigation privée : Tester dans une fenêtre de navigation privée pour éviter les cookies existants