He leído la respuesta a esta pregunta:
https://stackoverflow.com/questions/4102763/apache-basic-authentication-except-for-those-allowed
Me ayudó a entender cómo no autenticar a algunos usuarios (según la 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 tengo esta base de datos (diferente de la base de datos utilizada para la autenticación):
User IP
Mark 192.168.1.2
Mike 192.168.1.3
Karl 192.168.1.4
1- ¿Puedo permitir todas las direcciones IP almacenadas en la BD usando una configuración en Apache?
2- Otro problema es que se pierde la autorización de la IP permitida. ¿Puede Apache usar esta base de datos para autorización, si el usuario puede obtener las páginas sin autenticación?
Actualizar:
para ser claro:
1- No quiero una solución estática, quiero que Apache permita todas las IP de la tabla mencionada en la base de datos (la base de datos está cambiando dinámicamente).
2- Sabemos que cuando Apache autentica a los usuarios, conoce el nombre de usuario de las credenciales de autenticación, pero al permitir, el nombre de usuario se perderá. Quiero que Apache extraiga el nombre de usuario de la IP que permite de la misma tabla en la que extrae el ¿Dirección IP?
Respuesta1
Puedes probar la respuesta sugerida.aquíde usar mod_rewrite
para poner en la lista negra un archivo:
## WHITELIST IPS ##
RewriteMap ipslist txt:/path/to/whitelist.txt
RewriteCond %{REMOTE_ADDR} ^(.*)$
RewriteCond ${ipslist:%1|black} ^black$ [NC]
RewriteRule (.*) - [F]
Puedes intentar usar algo dinámico comomod_authn_dbdpara seleccionar el nombre de usuario y contraseña de una base de datos:
# 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>
Respuesta2
En respuesta al punto 1, puedes tener tantas IP permitidas como quieras... ejemplos:
Allow from 192.168.1.2
Allow from 192.168.1.3
Allow from 192.168.1.4
o incluso
Allow from 192.168.1.2 192.168.1.3 192.168.1.4
y muchos otros, incluidas gamas.
° 2, lo siento, pero no entiendo lo que estás preguntando, ¿quizás un ejemplo?