Files
btpxpress-frontend/FIX_431_ERROR.md

2.6 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 :

  1. Ouvrir les outils développeur (F12)
  2. Onglet Application > Cookies
  3. Supprimer tous les cookies pour http://localhost:8081
  4. Redémarrer l'application Quarkus
  5. 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 :

  1. Accédez à http://localhost:8081/dashboard.xhtml
  2. Vous serez redirigé vers Keycloak pour l'authentification
  3. Après authentification, les nouveaux cookies (optimisés) seront créés

Si le problème persiste

  1. Augmenter encore la limite :

    quarkus.http.max-headers-size=128K
    quarkus.vertx.max-headers-size=128K
    
  2. Vérifier dans Keycloak que le client btpxpress-frontend n'a pas trop de claims/roles qui gonflent le token

  3. Mode navigation privée : Tester dans une fenêtre de navigation privée pour éviter les cookies existants