Apache Basic Auth, кажется, отключить другой модуль
У меня есть 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 за "пропущенные" запросы.
В чем может быть причина этого? Журнал ошибок не содержит никакой полезной информации.
1 ответ
Хотя я не могу точно сказать, для стороннего модуля и как он подключается к потоку авторизации, я бы поспорил, что причина в Satisfy Any
,
Это позволяет пропустить остальные этапы авторизации при совпадении одного метода авторизации - это похоже на то, что вы видите.