Je configure un SSO pour les utilisateurs d'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 est
"Mauvaise Demande
Votre navigateur a envoyé une demande que ce serveur ne pouvait pas comprendre.
La taille d'un champ d'en-tête de demande dépasse la limite du serveur.
Autorisation: Négocier [chaîne ultra longue] "
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 LogLevel, je n'aurai aucun journal à ce sujet. La dernière ligne du journal est
ssl_engine_kernel.c(1879): OpenSSL: Write: SSL negotiation finished successfully
Quelqu'un a-t-il une idée à ce sujet?
Réponses:
Mon instinct dit que vous avez un très gros jeton de sécurité, peut-être 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 importante si l'utilisateur est membre d'un nombre important de groupes. Vous pouvez utiliser l'
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 en sortir en modifiant votre
/etc/krb5.conf
fichier pour référencer le KDC en tant quekdc = tcp/kdc.name.here
. Ce problème peut se produire si le PAC fait que le jeton est trop volumineux pour un datagramme UDP, mais forcer la communication vers le KDC avec TCP est également une solution de contournement possible.La modification de cette valeur sur 1 000 utilisateurs n'est pas difficile pour vos administrateurs AD si elle résout votre problème.
la source
J'ai eu cette erreur sur un site Drupal 7 dans Safari sur Mac et j'ai constaté que la fermeture des fenêtres du navigateur et l'effacement du cache du navigateur, la fermeture du navigateur, son ouverture et le rechargement de la page fonctionnaient pour mettre fin à l'erreur qui ne s'est produite que cette fois.
la source
J'ai trouvé une autre solution, mais je ne sais pas si cela fonctionne vraiment. Apache Docs indique que pour les gros packages, je devrai définir LimitRequestFieldSize et / ou LimitRequestLine.
Le fait est que si vous souhaitez définir la valeur de LimitRequestLine sur quelque chose de supérieur à 8 Ko, vous devrez modifier la source et recompiler Apache, car 8 Ko est la maxSize fixe ( 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 plus tard. Il semble que ce soit une version de package différente car le problème ne s'y est pas produit.
la source
Dans le cas où quelqu'un rencontre ce problème avec mod_proxy_ajp, jetez un œil à: À partir de quelle version Apache est LimitRequestFieldSize n'est plus codé en dur à 8k max?
la source