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

Динамически определять файл htpasswd

Есть ли способ динамически определить, какой файл htpasswd использовать во время выполнения? Например, следующее (что не работает, просто пример) внутри контекста VirtualHost:

RewriteEngine on
RewriteMap htpasswdfiles txt:/srv/htpasswdfiles/htpasswdfiles.map
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule .* - [E=PASSWD_FILE:${htpasswdfiles:%1},L]

<Directory /some/path>
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile $PASSWD_FILE
    Require valid-user
</Directory>

Я знаю, что приведенный выше пример не работает, но я не уверен, есть ли другой способ использовать такие переменные среды, как этот ... Если нет, я не знаю, есть ли какой-либо другой метод для выбора файла htpasswd динамически во время выполнения. htpasswdfiles.map - это карта, содержащая домены слева и соответствующие пути к файлам htpasswd справа.

Решение 1

Просто укажите конфигурацию Apache на плоский файл и пусть скрипт вне Apache управляет содержимым.

Решение 2

Используйте LDAP для аутентификации вместо поиска записей в плоском файле.

Я использовал для настройки динамической базовой аутентификации, используя mod_perl без htpasswd файлов, в конфигурациях Apache был объявлен обработчик, а Perl позаботился обо всем остальном. Но, наверное, это не то, что вам нужно (mod_perl в наши дни обычно не используется).

Поскольку перезапись и аутентификация не имеют абсолютно ничего общего, это не работает.

ПОЧЕМУ вам нужно «динамически выбирать файл htpasswd»?