Skip to content


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

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

  SetEnvIfNoCase Request_URI ^/index.php/rest/V1 dont_require_auth=true
  
    AllowOverride All
    AuthType Basic
    AuthName "Ausweis"
    AuthBasicProvider file
    AuthUserFile "/usr/hosting/usercreds"
    
      Require env dont_require_auth
      Require all granted
    
    Require user dev
  

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

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

SetEnvIfNoCase HOST ^dev\.avz\.org\.ua$ is_protected
SetEnvIfNoCase HOST ^test\.avz\.org\.ua$ is_protected

  
    Require all granted
    Require not env is_protected
  
  AuthType Basic
  AuthName "Ausweis"
  AuthUserFile "/usr/hosting/usercreds"
  Require valid-user

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

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

Posted in *nix, Howto.

Tagged with .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

You must be logged in to post a comment.