Используя Apache 2.2, я хотел бы использовать mod_rewrite для перенаправления неаутентифицированных пользователей на использование https, если они находятся на http. Есть ли директива или условие, по которому можно проверить, аутентифицирован ли пользователь (нет)?
Например, я мог бы настроить ограниченный /foo
расположение на моем сервере: -
<Location "/foo/">
Order deny,allow
# Deny everyone, until authenticated...
Deny from all
# Authentication mechanism
AuthType Basic
AuthName "Members only"
# AuthBasicProvider ...
# ... Other authentication stuff here.
# Users must be valid.
Require valid-user
# Logged-in users authorised to view child URLs:
Satisfy any
# If not SSL, respond with HTTP-redirect
RewriteCond ${HTTPS} off
RewriteRule /foo/?(.*)$ https://${SERVER_NAME}/foo/$2 [R=301,L]
# SSL enforcement.
SSLOptions FakeBasicAuth StrictRequire
SSLRequireSSL
SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
</Location>
Проблема здесь в том, что каждый файл в каждой подпапке будет зашифрован. В этом нет необходимости, но я не вижу причин отказываться от этого. Я бы хотел RewriteRule
срабатывать только во время аутентификации. Если пользователь уже авторизован для просмотра папки, я не хочу RewriteRule
быть запущенным. Это возможно?
РЕДАКТИРОВАТЬ:
Я не использую здесь интерфейсный HTML. При этом используется только встроенный интерфейс просмотра каталогов Apache и его встроенные механизмы аутентификации. Мой <Directory>
конфигурация:
<Directory ~ "/foo/">
Order allow,deny
Allow from all
AllowOverride None
Options +Indexes +FollowSymLinks +Includes +MultiViews
IndexOptions +FancyIndexing
IndexOptions +XHTML
IndexOptions NameWidth=*
IndexOptions +TrackModified
IndexOptions +SuppressHTMLPreamble
IndexOptions +FoldersFirst
IndexOptions +IgnoreCase
IndexOptions Type=text/html
</Directory>
Кажется, вы не понимаете, как работает базовая аутентификация. Базовая аутентификация требует поиска пароля для каждого запроса, например загрузка html-страницы со 100 изображениями требует обработки не менее 100 запросов аутентификации. В частности, если SSL / TLS не используется, учетные данные передаются в виде открытого текста и могут быть перехвачены. Включение https только для страницы входа имеет смысл при использовании аутентификации на основе файлов cookie (например, http://finesec.com/sitedefensor.html)