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_rewrite
para 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?