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

9

Я настраиваю единый вход для пользователей 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>

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

Еще одна вещь, которая кажется мне странной, заключается в том, что даже при отладке LogLevel я не получу никаких записей об этом. Последняя строка журнала

ssl_engine_kernel.c(1879): OpenSSL: Write: SSL negotiation finished successfully

У кого-нибудь есть идеи по этому поводу?

Aurelin
источник
Вы смогли найти решение этой проблемы? У меня точно такие же симптомы.
Гани Симсек
Привет Гани, я не уверен. Я написал свое решение «не уверен, если работает» здесь 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. Я забыл упомянуть об этом, извините.
Аурелин
Ну ... я должен сказать, что это было немного странно
Aurelin
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 из нашего собственного репозитория на втором сервере. Кажется, что это была другая версия пакета, так как проблема там не возникала.

Aurelin
источник