¿Autorización de Apache para los usuarios permitidos?

¿Autorización de Apache para los usuarios permitidos?

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_rewritepara 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?

información relacionada