Вопрос: Apache Bad Request «Размер поля заголовка запроса превышает лимит сервера» с SSO Kerberos


Я настраиваю SSO для пользователей Active Directory через веб-сайт, который работает на Apache (Apache2 на SLES 11.1), и при тестировании с помощью Firefox все работает отлично. Но когда я пытаюсь открыть сайт в Internet Explorer 8 (Windows 7), все, что я получаю, это

«Плохой запрос»

Ваш браузер отправил запрос, который этот сервер не мог понять.

Размер поля заголовка запроса превышает лимит сервера.

Авторизация: Переговоры [ultra long string]

Мой 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

Кто-нибудь имеет представление об этом?


8
2018-02-21 16:29


Источник


Вы смогли найти решение этой проблемы? У меня такие же симптомы. - Gani Simsek
Эй, Гани, я не уверен. Я написал свой «не уверенный в себе» -решение здесь serverfault.com/a/426599/111458 , Пожалуйста, извините мой поздний ответ. Если вам все еще нужно решение, попробуйте мой ответ и дайте мне / нам знать, если он сработает =) - Aurelin


Ответы:


Моя кишка говорит, что у вас очень большой токен безопасности, возможно, потому, что пользователь входит в большое количество групп. Реализация AD Kerberos будет предоставлять Apache Сертификат атрибута привилегии (PAC) по умолчанию. Эта структура может быть большой, если пользователь является членом значительного числа групп. Ты можешь использовать tokensz.exe инструмент чтобы увидеть размер токена пользователя.

Если это проблема, вы можете изменить атрибут UserAccountControl учетной записи пользователя для предотвращения отправки PAC.

Вы можете уйти с изменением своего /etc/krb5.conf файл для ссылки на KDC as kdc = tcp/kdc.name.here, Эта проблема может возникнуть, если PAC приводит к тому, что токен слишком велик для дейтаграммы UDP, но принудительное соединение с KDC с помощью TCP также является возможным обходным путем.

Изменение этого значения для 1000 пользователей не сложно для администраторов AD, если оно решает вашу проблему.


7
2018-02-21 16:55



(Черт, случайно удалил комментарий. Я все еще сплю, похоже) Ну, поэтому я могу спросить их, не изменит ли это, но я сомневаюсь в этом из-за организации. состав. И дело не в том, что мой проект очень важен, поэтому .. Сначала попробую изменить /etc/krb5.conf .. Спасибо. Кстати, любая идея, почему эта проблема возникает только в IE, но не в Opera и Firefox? - Aurelin
Я попытался изменить /etc/krb5.conf, но это не исправляет его вообще. Еще одна вещь, которую я только выяснил, заключается в том, что ваша ссылка описывает только решение для серверов Win2k3, но мы запускаем Win2k8 RC2. Я забыл упомянуть об этом, извините. - Aurelin
Ну .. я должен сказать, что это было немного странно - Aurelin


Эта ошибка произошла на сайте Drupal 7 в Safari на Mac и обнаружила, что закрытие окон браузера и очистка кеша браузера, выход из браузера, открытие его резервного копирования и перезагрузка страницы, работающей для прекращения ошибки, которая произошла это один раз.

Неверный запрос. Ваш браузер отправил запрос, который не мог выполнить этот сервер.   Понимаю.   > Размер поля заголовка запроса превышает лимит сервера.   печенье   / п


2
2017-10-18 04:05



Звучит как решение «Microsoft» для меня: перезагрузитесь и надейтесь, что проблема исчезнет. - Colin 't Hart
@Colin, независимо от того, насколько это может звучать как ответ Microsoft, много раз это в точку что требуется. При очистке кеша браузера многие браузеры не могут очистить кеш-память, поэтому необходимо перезапустить браузер. Это, безусловно, относится к версиям Mac Firefox, Chrome и Camino. Я никогда не использую Safari, поэтому я не могу комментировать этот. - John Gardeniers


Я нашел другое решение, хотя я не уверен, действительно ли он работает. Apache Docs заявляет, что для больших пакетов мне придется установить LimitRequestFieldSize и / или LimitRequestLine.

Дело в том, что если вы хотите установить значение LimitRequestLine на что-либо выше 8 КБ, вам придется изменить исходный код и перекомпилировать Apache, поскольку 8KB - это фиксированный maxSize (http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestline).

Я не знаю точно, работает ли этот метод, потому что позже я переустановил apache из нашего собственного репозитория на второй сервер. Похоже, что это была другая версия пакета, так как проблемы там не возникало.


1
2017-09-12 06:21





В случае, если кто-то столкнется с этой проблемой с mod_proxy_ajp, посмотрите: С какой версией Apache дальше LimitRequestFieldSize больше не жестко закодирован до 8k max?


1
2018-01-14 15:55