Авторизация Apache для разрешенных пользователей?

Авторизация Apache для разрешенных пользователей?

Я прочитал ответ на этот вопрос:

https://stackoverflow.com/questions/4102763/apache-basic-authentication-except-for-those-allowed

Это помогло мне понять, как не аутентифицировать некоторых пользователей (в зависимости от IP):

<Directory /var/www/files/>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.2
    Satisfy Any
    AuthUserFile /etc/apache2/basic.pwd 
    AuthName "Please enter username and password" 
    AuthType Basic 
    Require valid-user 
</Directory>

Представьте, что у меня есть эта база данных (отличная от базы данных, используемой для аутентификации):

User        IP 
Mark        192.168.1.2
Mike        192.168.1.3
Karl        192.168.1.4

1- Могу ли я разрешить все IP-адреса, хранящиеся в базе данных, с помощью конфигурации в Apache?

2- еще одна проблема - теряется авторизация разрешенного IP, может ли Apache использовать эту базу данных для авторизации, если пользователю разрешено получать страницы без аутентификации?

Обновлять:

для ясности:

1- Мне не нужно статическое решение, я хочу, чтобы Apache разрешал все IP-адреса из указанной таблицы в БД (БД меняется динамически).

2- Мы знаем, что когда Apache аутентифицирует пользователей, он узнает имя пользователя из учетных данных аутентификации, но при разрешении имя пользователя будет потеряно. Я хочу, чтобы Apache извлекал имя пользователя из IP-адреса, которому он разрешает, из той же таблицы, из которой он извлекает IP-адрес?

решение1

Вы можете попробовать предложенный ответздесьиспользования mod_rewriteдля внесения в черный список из файла:

## WHITELIST IPS ##
RewriteMap ipslist txt:/path/to/whitelist.txt
RewriteCond %{REMOTE_ADDR} ^(.*)$
RewriteCond ${ipslist:%1|black} ^black$ [NC]
RewriteRule (.*) - [F]

Вы можете попробовать использовать что-то динамичное, напримерmod_authn_dbdчтобы выбрать имя пользователя и пароль из базы данных:

# mod_dbd configuration
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"

DBDMin  4
DBDKeep 8
DBDMax  20
DBDExptime 300

<Directory /usr/www/myhost/private>
  # core authentication and mod_auth_basic configuration
  # for mod_authn_dbd
  AuthType Basic
  AuthName "My Server"
  AuthBasicProvider dbd

  # core authorization configuration
  Require valid-user

  # mod_authn_dbd SQL query to authenticate a user
  AuthDBDUserPWQuery \
    "SELECT password FROM authn WHERE user = %s"
</Directory>

решение2

В ответе на вопрос №1 вы можете иметь столько разрешенных IP-адресов, сколько захотите... примеры:

Allow from 192.168.1.2
Allow from 192.168.1.3
Allow from 192.168.1.4

или даже

Allow from 192.168.1.2 192.168.1.3 192.168.1.4

и многие другие, включая диапазоны.

по поводу пункта 2, извините, но я не понимаю, о чем вы спрашиваете, может быть, пример?

Связанный контент