Estoy configurando un SSO para usuarios de Active Directory a través de un sitio web que se ejecuta en un Apache (Apache2 en SLES 11.1), y cuando pruebo con Firefox todo funciona bien. Pero cuando trato de abrir el sitio web en Internet Explorer 8 (Windows 7), todo lo que obtengo es
"Solicitud incorrecta
Su navegador envió una solicitud que este servidor no pudo entender.
El tamaño de un campo de encabezado de solicitud excede el límite del servidor.
Autorización: Negociar [cadena ultra larga] "
Mi vhost.cfg se ve así:
<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>
También me aseguré de que las cookies se eliminen y probé varios valores más pequeños para LimitRequestFieldSize y LimitRequestLine.
Otra cosa que me parece extraña es que incluso con la depuración LogLevel no obtendré ningún registro sobre esto. La última línea del registro es
ssl_engine_kernel.c(1879): OpenSSL: Write: SSL negotiation finished successfully
¿Alguien tiene una idea sobre eso?
Respuestas:
Mi instinto dice que tienes un token de seguridad muy grande, posiblemente porque el usuario es miembro de una gran cantidad de grupos. La implementación de AD Kerberos proporcionará a Apache un Certificado de atributo de privilegio (PAC) de forma predeterminada. Esta estructura puede ser grande si el usuario es miembro de un número significativo de grupos. Puede usar la
tokensz.exe
herramienta para ver el tamaño del token del usuario.Si este es el problema, puede modificar el atributo UserAccountControl de la cuenta del usuario para evitar que se envíe el PAC.
Es posible que pueda modificar su
/etc/krb5.conf
archivo para hacer referencia al KDC comokdc = tcp/kdc.name.here
. Este problema puede ocurrir si el PAC hace que el token sea demasiado grande para un datagrama UDP, pero forzar la comunicación al KDC con TCP también es una posible solución alternativa.Cambiar ese valor en 1,000 usuarios no es difícil para los administradores de AD si resuelve su problema.
fuente
Tuve este error en un sitio de Drupal 7 en Safari en Mac y descubrí que cerrar las ventanas del navegador y borrar el caché del navegador, cerrar el navegador, abrirlo nuevamente y volver a cargar la página funcionó para descontinuar el error que solo sucedió Esta única vez.
fuente
Encontré otra solución, aunque no estoy seguro de si realmente funciona. Apache Docs afirma que para paquetes grandes tendré que establecer LimitRequestFieldSize y / o LimitRequestLine.
El asunto es que si desea establecer el valor de LimitRequestLine en algo más alto que 8 KB, entonces tendrá que modificar la fuente y recompilar Apache, ya que 8 KB es el tamaño máximo fijo ( http://httpd.apache.org/docs/ 2.2 / mod / core.html # limitrequestline ).
No estoy seguro si este método funciona, porque reinstalé apache desde nuestro propio repositorio en un segundo servidor más tarde. Parece que esta era una versión de paquete diferente ya que el problema no ocurrió allí.
fuente
En caso de que alguien encuentre este problema con mod_proxy_ajp, eche un vistazo a: ¿ Desde qué versión de Apache en adelante LimitRequestFieldSize ya no está codificado a 8k max?
fuente