Назад | Перейти на главную страницу

Аутентификация только для запросов HTTPS в Apache

Я настраиваю аутентификацию для своего веб-пространства через .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>

. - это подстановочный знак регулярного выражения, поэтому аутентификация по-прежнему применяется ко всем действительным запросам, но только после перезаписи