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

Почему Squid нарушает аутентификацию Kerberos / NTLM?

Я использую squid 2.6.22 (Centos 5 Default) в качестве прокси. Похоже, что Squid нарушает процесс аутентификации для веб-страниц, когда им требуется NTLM или Kerberos Auth. Я тестировал sharepoint 2007 и пробовал все 3 метода аутентификации (NTLM, Kerberos, Basic). Доступ к сайту без squid работает во всех случаях. Когда я открываю ту же страницу с помощью squid, то работает только basic-auth. Использование IE или Firefox не имеет никакого значения. Сам Squid может использовать кто угодно (auth_param не настроен). Немного сложно найти решения в Интернете, поскольку большинство тем крутятся вокруг auth_param для аутентификации пользователей в squid, а не для аутентификации пользователей на веб-странице за squid. Может ли кто-нибудь помочь?

Редактировать:
Извините, но мой первый тест был полностью провален. Я тестировал неправильные веб-серверы (напоминание себе: всегда проверяйте предположения перед тестированием). Теперь я понял, что сценарий проблемы совсем другой.

Между прочим: функция, которая обеспечивает сквозную передачу NTLM в squid, называется «закрепление соединения», а HTTP-заголовок «Поддержка прокси: аутентификация на основе сеанса» »

В Firefox есть ошибка, из-за которой NTLM не работает в определенных условиях. Использование Squid в качестве прокси почти всегда соответствует этим условиям. Видеть https://bugzilla.mozilla.org/show_bug.cgi?id=602814

Я думаю, что то, что вы спрашиваете, очень относится Как настроить apache для базовой аутентификации или разрешить использование ntlm при проксировании?. В частности, если вы хотите пройти аутентификацию как на прокси, так и на удаленном сайте, это невозможно (если клиент не использует CONNECT).

Если ваша ситуация такова, что вы не хотите аутентифицироваться в Squid, а только на удаленном сайте, тогда я думаю, что Squid каким-то образом поступает правильно: как только ресурс, который вы получили путем аутентификации, находится в кеше, он теперь также доступен для неаутентифицированных запросов для других клиентов. Точнее, посмотрите на этот поток:

  • Пользователь А запросил ресурс /index.html на некоторых that.server.com и предоставил информацию для аутентификации.
  • Сервер вернул HTTP-статус 200, и Squid кэшировал ресурс /index.html.
  • Теперь пользователь B запросил тот же ресурс и не предоставил информации для аутентификации / или предоставил некоторую аутентифицированную информацию.

Возможные сценарии:

  • Кальмар возвращается /index.html пользователю B из кеша. Это неправильно, так как только сервер знает, какие пользователи имеют доступ к каким ресурсам.
  • Squid также пытается кэшировать информацию аутентификации вместе с /index.html. Для базовой аутентификации Squid может захватывать имя пользователя. Другие механизмы (NTLM / Kerberos) отправляют только хэши по HTTP, поэтому нет возможности узнать имя пользователя.
  • Squid никогда не кешируется /index.html.