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

Базовая аутентификация Apache, похоже, отключает другой модуль

У меня есть Apache 2.2 (за балансировщиком нагрузки) с дополнительным сторонним модулем (веб-агент OpenAM), который загружается с помощью директивы LoadModule. Этот модуль проверяет каждый запрос, разрешен он или нет. Вся установка работает, и в журнале стороннего модуля я вижу, что проверки выполняются соответственно для каждого запроса, найденного в журнале доступа apache.

Ситуация изменится, если я активирую базовую аутентификацию, поместив следующие директивы в часть VirtualHost конфигурации Apache:

<Directory /path/to/docroot>
    Options -MultiViews
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 10.0.0.0/8
    Allow from <other ips>
    AuthType Basic
    AuthBasicProvider file
    AuthName "AuthZone"
    AuthUserFile /path/to/htpasswd
    Require valid-user
    Satisfy Any
</Directory>

Теперь базовая авторизация работает, но не проверки сторонним модулем. Похоже, что каждый запрос, который подвергался базовой обработке аутентификации, не попадал в сторонний модуль. В журналах последнего я могу видеть только запросы, соответствующие параметру «Разрешить» и, следовательно, не прошедшие базовую обработку аутентификации.

Я вижу все запросы в журнале доступа, и я вижу, что Apache отвечает кодом 200 на «отсутствующие» запросы.

В чем может быть причина этого? Журнал ошибок не содержит никакой полезной информации.

Хотя я не могу точно сказать о стороннем модуле и о том, как он подключается к потоку авторизации, я готов поспорить, что причина в Satisfy Any.

Это позволяет пропустить остальные шаги авторизации, когда один из методов авторизации совпадает - это похоже на то, что вы видите.