Я настраиваю единый вход для пользователей Active Directory через веб-сайт, работающий на Apache (Apache2 на SLES 11.1), и при тестировании с Firefox все работает нормально. Но когда я пытаюсь открыть сайт в Internet Explorer 8 (Windows 7), все, что я получаю, это
"Плохой запрос
Ваш браузер отправил запрос, который этот сервер не может понять.
Размер поля заголовка запроса превышает ограничение сервера.
Авторизация: переговоры [сверхдлинная строка] "
Мой vhost.cfg выглядит так:
<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>
Я также убедился, что файлы cookie удалены, и попробовал несколько меньших значений для LimitRequestFieldSize и LimitRequestLine.
Еще мне кажется странным то, что даже при отладке LogLevel я не получу никаких журналов об этом. Последняя строка журнала
ssl_engine_kernel.c(1879): OpenSSL: Write: SSL negotiation finished successfully
Кто-нибудь знает об этом?
Мое чутье подсказывает, что у вас очень большой токен безопасности, возможно, потому, что пользователь является членом большого количества групп. Реализация AD Kerberos предоставит Apache Сертификат атрибута привилегий (PAC) по умолчанию. Эта структура может быть большой, если пользователь является членом значительного числа групп. Ты можешь использовать tokensz.exe
инструмент чтобы увидеть размер токена пользователя.
Если это проблема, вы можете изменить атрибут UserAccountControl учетной записи пользователя чтобы предотвратить отправку PAC.
Возможно, вам удастся изменить свой /etc/krb5.conf
файл для ссылки на KDC как kdc = tcp/kdc.name.here
. Эта проблема может возникнуть, если PAC приводит к тому, что маркер становится слишком большим для дейтаграммы UDP, но принудительное соединение с KDC с помощью TCP также является возможным обходным путем.
Изменить это значение на 1000 пользователей не составит труда для администраторов AD, если это решит вашу проблему.
У меня была эта ошибка на сайте Drupal 7 в Safari на Mac, и я обнаружил, что закрытие окон браузера и очистка кеша браузера, выход из браузера, открытие его резервной копии и перезагрузка страницы работали, чтобы устранить ошибку, которая только что произошла на этот раз.
Неверный запрос Ваш браузер отправил запрос, который этот сервер не может понять. > Размер поля заголовка запроса превышает ограничение сервера. Cookie / n
Если кто-то столкнется с этой проблемой с помощью mod_proxy_ajp, взгляните на: Начиная с какой версии Apache и далее LimitRequestFieldSize больше не жестко запрограммирован на 8 КБ?
Я нашел другое решение, хотя не уверен, что оно действительно работает. В документации Apache указано, что для больших пакетов мне нужно будет установить LimitRequestFieldSize и / или LimitRequestLine.
Дело в том, что если вы хотите установить значение LimitRequestLine на значение, превышающее 8 КБ, вам придется изменить исходный код и перекомпилировать Apache, поскольку 8 КБ - это фиксированный maxSize (http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestline).
Я не знаю наверняка, работает ли этот метод, потому что позже я переустановил apache из нашего собственного репозитория на втором сервере. Похоже, это была другая версия пакета, так как там проблемы не было.