Apache-Autorisierung für die zulässigen Benutzer?

Apache-Autorisierung für die zulässigen Benutzer?

Ich habe die Antwort auf diese Frage gelesen:

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

Es hat mir geholfen zu verstehen, wie ich die Authentifizierung einiger Benutzer (gemäß der IP) verhindern kann:

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

Stellen Sie sich vor, ich habe diese Datenbank (anders als die Datenbank, die für die Authentifizierung verwendet wird):

User        IP 
Mark        192.168.1.2
Mike        192.168.1.3
Karl        192.168.1.4

1- Kann ich mit einer Konfiguration in Apache alle in der Datenbank gespeicherten IP-Adressen zulassen?

2 – Ein weiteres Problem ist, dass die Autorisierung der zulässigen IP verloren geht. Kann Apache diese Datenbank zur Autorisierung verwenden, wenn der Benutzer auf die Seiten ohne Authentifizierung zugreifen darf?

Aktualisieren:

deutlich sein:

1 – Ich möchte keine statische Lösung, ich möchte, dass Apache alle IPs aus der genannten Tabelle in der Datenbank zulässt (die Datenbank ändert sich dynamisch).

2- Wir wissen, dass Apache bei der Authentifizierung von Benutzern den Benutzernamen aus den Authentifizierungsdaten kennt, aber beim Zulassen geht der Benutzername verloren. Ich möchte, dass Apache den Benutzernamen der zugelassenen IP aus derselben Tabelle extrahiert, aus der es auch die IP-Adresse extrahiert?

Antwort1

Sie können die vorgeschlagene Antwort versuchenHierder Verwendung mod_rewritezum Erstellen einer Blacklist aus einer Datei:

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

Sie können versuchen, etwas Dynamisches zu verwenden wiemod_authn_dbdum den Benutzernamen und das Passwort aus einer Datenbank auszuwählen:

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

Antwort2

Als Antwort auf Nr. 1 können Sie so viele IPs zulassen, wie Sie möchten … Beispiele:

Allow from 192.168.1.2
Allow from 192.168.1.3
Allow from 192.168.1.4

oder auch

Allow from 192.168.1.2 192.168.1.3 192.168.1.4

und viele andere, einschließlich Bereiche.

zu Nr. 2: Tut mir leid, aber ich verstehe Ihre Frage nicht. Vielleicht ein Beispiel?

verwandte Informationen