Apache Bad Request "Розмір поля заголовка запиту перевищує ліміт сервера" з Kerberos SSO


9

Я налаштовую 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

Хтось має уявлення про це?


Чи вдалося вам знайти рішення цієї проблеми? У мене точно такі ж симптоми.
Гані Сімсек

Гей, Гані, я не впевнений. Я написав своє рішення "не впевнений, якщо працює", тут serverfault.com/a/426599/111458 . Вибачте, будь ласка, мою пізню відповідь. Якщо вам все-таки потрібне рішення, спробуйте мою відповідь і повідомте мені / нам, чи спрацювало це =)
Aurelin

Відповіді:


7

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

Якщо це проблема, ви можете змінити атрибут UserAccountControl облікового запису користувача, щоб запобігти надсилання PAC.

Можливо, ви зможете уникнути модифікації /etc/krb5.confфайлу для посилання на KDC як kdc = tcp/kdc.name.here. Ця проблема може виникнути, якщо PAC призводить до того, що маркер занадто великий для дейтаграми UDP, але примушування зв'язку до KDC з TCP теж можливе вирішення.

Змінити це значення для 1000 користувачів не важко для ваших адміністраторів AD, якщо це вирішить вашу проблему.


(Ах, чорт, випадково видалили коментар. Я все ще сплю, здається) Ну, тож я можу запитати їх, чи не змінили б це, але я сумніваюсь через орг. будова. І справа не в тому, що мій проект дуже важливий, тому .. Спершу спробую модифікацію /etc/krb5.conf .. Дякую. До речі, будь-яка ідея, чому ця проблема виникає лише в IE, але не в Opera або Firefox?
Аурелін

Я намагався змінити /etc/krb5.conf, але це зовсім не виправляє. Ще я зрозумів, що ваше посилання описує лише рішення для серверів Win2k3, але ми запускаємо Win2k8 RC2. Я забув це згадати, вибачте.
Аурелін

Ну ..
Треба

2

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

Неправильний запит Ваш браузер надіслав запит, який цей сервер не міг зрозуміти. > Розмір поля заголовка запиту перевищує ліміт сервера. Cookie / n


2
Для мене звучить рішення "Microsoft": перезавантажте систему і сподіваюся, що проблема відходить.
Colin 't Hart

1
@Colin, незалежно від того, наскільки це може звучати як відповідь "Microsoft", багато разів саме це потрібно. При очищенні кешу браузера багато браузерів не випорожнюють кеш пам'яті, отже, необхідність перезапустити браузер. Це звичайно стосується Mac версій Firefox, Chrome та Camino. Я ніколи не використовую Safari, тому не можу коментувати це.
Джон Гарденєр

1

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

Вся справа в тому, що якщо ви хочете встановити значення LimitRequestLine на щось вище, ніж 8 КБ, вам доведеться змінити джерело і перекомпілювати Apache, оскільки 8 КБ - це фіксований maxSize ( http://httpd.apache.org/docs/ 2.2 / mod / core.html # limitrequestline ).

Я точно не знаю, чи працює цей метод, оскільки пізніше я знову встановив apache з власного сховища на другому сервері. Здається, це була інша версія пакету, оскільки проблема там не виникала.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.