Skip to content


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

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

SetEnvIfNoCase Request_URI ^/index.php/rest/V1 dont_require_auth=true
 
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.