Question Apache Bad Request «La taille d'un champ d'en-tête de demande dépasse la limite du serveur» avec l'authentification unique Kerberos


Je configure un SSO pour les utilisateurs Active Directory via un site Web qui s'exécute sur Apache (Apache2 sur SLES 11.1) et, lors des tests avec Firefox, tout fonctionne correctement. Mais lorsque j'essaie d'ouvrir le site Web dans Internet Explorer 8 (Windows 7), tout ce que je reçois, c'est

"Mauvaise Demande

Votre navigateur a envoyé une demande que ce serveur n'a pas pu comprendre.

La taille d'un champ d'en-tête de demande dépasse la limite du serveur.

Autorisation: négocier [ultra longue chaîne] "

Mon vhost.cfg ressemble à ceci:

<VirtualHost hostname:443>
  LimitRequestFieldSize 32760
  LimitRequestLine 32760
  LogLevel debug

  <Directory "/data/pwtool/sec-data/adbauth">
    AuthName "Please login with your AD-credentials (Windows Account)"
    AuthType Kerberos
    KrbMethodNegotiate on
    KrbAuthRealms REALM.TLD
    KrbServiceName HTTP/hostname
    Krb5Keytab /data/pwtool/conf/http_hostname.krb5.keytab
    KrbMethodK5Passwd on
    KrbLocalUserMapping on
    Order allow,deny
    Allow from all
  </Directory>

  <Directory "/data/pwtool/sec-data/adbauth">
    Require valid-user
  </Directory>

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /etc/apache2/ssl.crt/hostname-server.crt
    SSLCertificateKeyFile /etc/apache2/ssl.key/hostname-server.key
</VirtualHost>

Je me suis également assuré que les cookies sont supprimés et j'ai essayé plusieurs valeurs plus petites pour LimitRequestFieldSize et LimitRequestLine.

Une autre chose qui me semble bizarre, c'est que même avec le débogage de LogLevel, je ne recevrai aucun journal à ce sujet. La dernière ligne du journal est

ssl_engine_kernel.c(1879): OpenSSL: Write: SSL negotiation finished successfully

Est-ce que quelqu'un a une idée à ce sujet?


9
2018-02-21 16:29


origine


Avez-vous été en mesure de trouver une solution à ce problème? J'ai exactement les mêmes symptômes. - Gani Simsek
Hey Gani, je ne suis pas sûr. J'ai écrit ici ma solution "pas sûr si fonctionne" serverfault.com/a/426599/111458 . S'il vous plaît excuser ma réponse tardive. Si vous avez toujours besoin de la solution, essayez ma réponse et laissez-moi / nous savons si cela a fonctionné =) - Aurelin


Réponses:


Mon instinct dit que vous avez un très gros jeton de sécurité, probablement parce que l'utilisateur est membre d'un grand nombre de groupes. L’implémentation AD Kerberos va fournir à Apache un Certificat d'attribut de privilège (PAC) par défaut. Cette structure peut être grande si l'utilisateur est membre d'un nombre important de groupes. Vous pouvez Utilisez le tokensz.exe outil pour voir la taille du jeton de l'utilisateur.

Si tel est le problème, vous pouvez modifier l'attribut UserAccountControl du compte de l'utilisateur pour empêcher l'envoi du PAC.

Vous pourrez peut-être vous permettre de modifier votre /etc/krb5.conf fichier pour référencer le KDC en tant que kdc = tcp/kdc.name.here. Ce problème peut se produire si le jeton est trop volumineux pour un datagramme UDP, mais forcer la communication avec le KDC avec TCP constitue également une solution de contournement possible.

Modifier cette valeur sur 1 000 utilisateurs n’est pas difficile pour vos administrateurs AD si cela résout votre problème.


7
2018-02-21 16:55



(Uh putain, j'ai accidentellement supprimé le commentaire. Je dors toujours, semble-t-il) Eh bien, je peux donc leur demander s'ils changeraient cela, mais j'en doute à cause de l'org. structure. Et ce n’est pas que mon projet soit très important, alors .. j’essaierai d’abord de modifier /etc/krb5.conf .. Merci. Btw, une idée pourquoi ce problème ne se produit que dans IE, mais pas dans Opera, ni Firefox? - Aurelin
J'ai essayé de modifier /etc/krb5.conf, mais cela ne résout rien du tout. Une autre chose que je viens de comprendre est que votre lien ne décrit qu'une solution pour les serveurs Win2k3, mais nous exécutons Win2k8 RC2. J'ai oublié de mentionner ça, désolé. - Aurelin
Eh bien .. je dois dire que c'était un peu bizarre - Aurelin


Cette erreur s'est produite sur un site Drupal 7 de Safari sur Mac et j'ai constaté que la fermeture de la fenêtre du navigateur et la suppression du cache du navigateur, la fermeture du navigateur, la restauration et le rechargement de la page permettaient de supprimer l'erreur qui s'était produite. cette fois.

Requête incorrecte Votre navigateur a envoyé une requête que ce serveur n'a pas pu   comprendre.   > La taille d'un champ d'en-tête de demande dépasse la limite du serveur.   Biscuit   / n


2
2017-10-18 04:05



Cela ressemble à une solution "Microsoft" pour moi: redémarrez et espérez que le problème disparaisse. - Colin 't Hart
@Colin, peu importe à quel point cela peut sembler être une réponse "Microsoft", cela revient souvent à exactement ce qui est requis. Lorsque vous effacez le cache d'un navigateur, de nombreux navigateurs ne parviennent pas à vider le cache en mémoire, d'où la nécessité de redémarrer le navigateur. Cela s'applique certainement aux versions Mac de Firefox, Chrome et Camino. Je n'utilise jamais Safari, donc je ne peux pas en parler. - John Gardeniers


J'ai trouvé une autre solution, même si je ne suis pas sûr que cela fonctionne vraiment. Apache Docs indique que pour les gros paquets je vais devoir définir LimitRequestFieldSize et / ou LimitRequestLine.

Le fait est que si vous souhaitez définir la valeur de LimitRequestLine sur une valeur supérieure à 8 Ko, vous devrez modifier le source et recompiler Apache, car 8 Ko est la valeur maxSize fixée (http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestline).

Je ne sais pas avec certitude si cette méthode fonctionne, car j'ai réinstallé apache à partir de notre propre référentiel sur un deuxième serveur ultérieurement. Il semble que ce soit une version de package différente car le problème ne s'est pas posé là.


1
2017-09-12 06:21





Si quelqu'un rencontre ce problème avec mod_proxy_ajp, consultez: À partir de quelle version d'Apache, LimitRequestFieldSize n'est-il plus codé en dur à 8k max?


1
2018-01-14 15:55