Что делать когда надо закрыть 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 на основе нескольких файлов с паролями.
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.