Я настраиваю аутентификацию для своего веб-пространства через .htaccess
файл (я не контролирую httpd.conf
файл). Для безопасной реализации у меня есть автоматическое перенаправление HTTP на HTTPS через
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=307,L]
Для аутентификации я использую следующие строки
AuthType Basic
AuthName name
AuthUserFile ..path-to-htpasswd..
require valid-user
Если я захожу на ресурс через http, мне нужно ввести имя пользователя и пароль два раза (первый раз для получения 307-перенаправления, а второй раз для получения фактического документа). Есть ли способ применить аутентификацию только для HTTPS-запроса? Таким образом, HTTP-запрос напрямую получает перенаправление, так что мне придется аутентифицироваться только один раз.
Приветствую и спасибо за ответы
Вы должны иметь возможность воспользоваться тем фактом, что перезапись обрабатывается до того, как файлы обслуживаются:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=307,L]
<FilesMatch ".">
AuthType Basic
AuthName name
AuthUserFile ..path-to-htpasswd..
require valid-user
</FilesMatch>
.
- это подстановочный знак регулярного выражения, поэтому аутентификация по-прежнему применяется ко всем действительным запросам, но только после перезаписи