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

Директива Apache для аутентифицированных пользователей?

Используя 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)