Skip to content


Выборочная http-аутентификация в apache httpd 2.4

Что делать когда надо закрыть HTTP-аутентификацией не весь сайт полностью, а почти весь, но оставить исключение для некоторых урлов? Использовать примерно вот такой конфиг виртуального хоста (внутри директив <VirtualHost>...</VirtualHost>):

  1.   SetEnvIfNoCase Request_URI ^/index.php/rest/V1 dont_require_auth=true
  2.   <Directory /usr/hosting/dev.avz.org.ua/www>
  3.     AllowOverride All
  4.     AuthType Basic
  5.     AuthName "Ausweis"
  6.     AuthBasicProvider file
  7.     AuthUserFile "/usr/hosting/usercreds"
  8.     <RequireAll>
  9.       Require env dont_require_auth
  10.       Require all granted
  11.     </RequireAll>
  12.     Require user dev
  13.   </Directory>

В результате благодаря объявленной в строке 1 переменной окружения dont_require_auth доступ без аутентификации (Require all granted в сочетании с логическим И Require env dont_require_auth) будет только по URL-ам, которые начинаются с /index.php/rest/V1. А на все остальные запросы будет приглашение ввести логин/пароль, и доступ будет разрешен только пользователю dev при условии ввода правильного соотвествующего ему пароля.

Или вот еще другой (обратный) пример, где запрос на аутентификацию будет только при НЕвыполнении условия:

  1. SetEnvIfNoCase HOST ^dev\.avz\.org\.ua$ is_protected
  2. SetEnvIfNoCase HOST ^test\.avz\.org\.ua$ is_protected
  3. <RequireAny>
  4.   <RequireAll>
  5.     Require all granted
  6.     Require not env is_protected
  7.   </RequireAll>
  8.   AuthType Basic
  9.   AuthName "Ausweis"
  10.   AuthUserFile "/usr/hosting/usercreds"
  11.   Require valid-user
  12. </RequireAny>

В документации, кстати, написано, что "when the Require directive is negated it can only fail or return a neutral result, and therefore may never independently authorize a request".

А а другой похожей статье вы можете почитать как сделать аутентификацию в apache на основе нескольких файлов с паролями.

Размещено в категории *nix, Howto. Теги: .

Комментариев: 0

Чтобы быть всегда в курсе здесь происходящего, Вы можете подписаться на RSS feed для комментариев на эту заметку.

Some HTML is OK

(required)

(required, but never shared)

, или ответить через trackback.

Страница 1 из 11