Autorização Apache para os usuários permitidos?

Autorização Apache para os usuários permitidos?

Eu li a resposta para esta pergunta:

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

Me ajudou a entender como não autenticar alguns usuários (de acordo com o 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>

Imagine que tenho este banco de dados (diferente do banco de dados usado para autenticação):

User        IP 
Mark        192.168.1.2
Mike        192.168.1.3
Karl        192.168.1.4

1- posso permitir todos os endereços IP armazenados no banco de dados usando uma configuração no Apache?

2- outro problema é a perda da autorização do IP permitido, o Apache pode usar esse banco de dados para autorização, se o usuário tiver permissão para obter as páginas sem autenticação?

Atualizar:

para ser claro:

1- Não quero uma solução estática, quero que o Apache permita todos os IPs da tabela mencionada no banco de dados (o banco de dados está mudando dinamicamente).

2- Sabemos quando o Apache autentica usuários, ele conhece o nome do usuário pelas credenciais de autenticação, mas com a permissão, o nome do usuário será perdido, quero que o Apache extraia o nome de usuário do IP que está permitindo da mesma tabela que extraia o Endereço de IP?

Responder1

Você pode tentar a resposta sugeridaaquide usar mod_rewritepara colocar um arquivo na lista negra:

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

Você pode tentar usar algo dinâmico comomod_authn_dbdpara selecionar o nome de usuário e a senha de um banco de dados:

# 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>

Responder2

Em resposta ao item 1, você pode ter quantos IPs quiser... exemplos:

Allow from 192.168.1.2
Allow from 192.168.1.3
Allow from 192.168.1.4

ou mesmo

Allow from 192.168.1.2 192.168.1.3 192.168.1.4

e muitos outros, incluindo intervalos.

para o número 2, desculpe, mas não estou entendendo o que você está perguntando, talvez um exemplo?

informação relacionada