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