Назад | Перейти на главную страницу

Неверный запрос Apache «Размер поля заголовка запроса превышает ограничение сервера» с Kerberos SSO

Я настраиваю единый вход для пользователей 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 из нашего собственного репозитория на втором сервере. Похоже, это была другая версия пакета, так как там проблемы не было.