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

805
Networker

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 man einige Benutzer (entsprechend der IP) nicht authentifiziert:

<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 zur Authentifizierung verwendete Datenbank):

User IP  Mark 192.168.1.2 Mike 192.168.1.3 Karl 192.168.1.4 

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

2- Ein weiteres Problem ist die Autorisierung der zulässigen IP-Adresse. Kann Apache diese Datenbank zur Autorisierung verwenden, wenn der Benutzer die Seiten ohne Authentifizierung erhalten darf?

Aktualisieren:

deutlich sein:

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

2- Wenn Apache Benutzer authentifiziert, wissen wir, dass der Benutzername aus Authentifizierungsnachweisen bekannt ist. Mit dem Zulassen geht der Benutzername jedoch verloren. Ich möchte, dass Apache den Benutzernamen der IP-Adresse aus derselben Tabelle extrahiert, in der er extrahiert wird IP Adresse?

0
Ich folge nicht "der Benutzername geht verloren". Können Sie erklären? Es ist auch üblich, diese Konfigurationsdateien in einem solchen Fall dynamisch zu generieren. Können Sie diese Anweisung nicht erstellen, wenn die Datenbank aktualisiert wird? Charlie Schliesser vor 9 Jahren 0
"Der Benutzername geht verloren" bedeutet, dass Apache die Benutzer so verfolgen kann, wie dies bei der Verwendung von Authentifizierungsinformationen der Fall ist. "Können Sie diese Anweisung nicht erstellen, wenn die Datenbank aktualisiert wird?" Dies ist sehr schlecht für die Leistung (Neustart von 'httpd' nach jeder DB-Änderung). und meine Datenbank ändert sich sehr viel bei CharlieS Networker vor 9 Jahren 0
Starten Sie es nicht neu, laden Sie das conf einfach neu. Charlie Schliesser vor 9 Jahren 0
"Nachladen" ist nicht gut genug, dies ist keine gute Lösung Networker vor 9 Jahren 0
Die Antwort unter http://stackoverflow.com/a/4677061/630614 kann einen Teil davon lösen. Wenn Sie jedoch Auth verwenden möchten, ist möglicherweise eine andere Bindung oder ein Conf-Reload erforderlich (das für laufende Benutzersitzungen nicht schädlich ist). Charlie Schliesser vor 9 Jahren 0
@CharlieS, danke das könnte helfen, was ist mit dem zweiten Problem. Networker vor 9 Jahren 0
Suchen Sie etwas mehr :) http://httpd.apache.org/docs/2.2/mod/mod_authn_dbd.html Charlie Schliesser vor 9 Jahren 0
Diese Seite ist hilfreich, um die Benutzer zu authentifizieren, um ihn nicht zu autorisieren Networker vor 9 Jahren 0

2 Antworten auf die Frage

1
Tyson

Als Antwort auf # 1 können Sie beliebig viele IPs haben ... 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.

für # 2, sorry, aber ich verstehe nicht, was Sie fragen, vielleicht ein Beispiel?

Ich möchte keine statische Lösung. Ich möchte, dass Apache alle IP-Adressen aus der genannten Tabelle in der Datenbank zulässt. Siehe Updates Networker vor 9 Jahren 0
@Networker Ich hielt eine weitere Antwort ab, bis ich die Apache-Dokumente durchsuchen konnte. Ich bin mir nicht sicher, was für einen Benutzer es ist, einen von IP gewährten Zugriff bereitzustellen. Kurz vor dem Namen, der für die Suche in der .htpasswd-Datei verwendet wird, sehe ich keine Möglichkeit, den von einer anderen Anwendung verwendeten Wert abzurufen. Httpclient-Authentifizierung ist auch keine sehr gute Sicherheit, Kennwörter werden in Klartext an den Server gesendet. Wenn Sie benutzerbasierte Anmeldungen für eine Anwendung wünschen, verwenden Sie ein komplexeres System in dieser App. Für httpclient Auth ist es gut, Suchbots, neugierige Benutzer usw. von einer Entwickler- oder Testseite fernzuhalten. Tyson vor 9 Jahren 1
@Networker Das hat gesagt ... Sie könnten einen Cron-Job haben, der die Datenbank abfragt und alle X Minuten eine .htaccess-Datei generiert, um die Aktualisierung autorisierter IPs zu ermöglichen. Tyson vor 9 Jahren 0
1
Charlie Schliesser

Sie können die vorgeschlagene Antwort versuchen, hier der Verwendung mod_rewriteaus einer Datei auf die schwarze Liste:

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

Sie können etwas Dynamisches wie mod_authn_dbd verwenden, um den Benutzernamen und das Kennwort 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> 
+1, weil es sinnvoll ist, aber mein zweites Problem nicht gelöst wird Networker vor 9 Jahren 0
Tut mir leid, aber ich lese das zweite Problem immer wieder und verstehe nicht, was Sie fragen. Was meinen Sie mit "der Benutzer ist verloren", "authentifizieren, aber nicht autorisieren"? Charlie Schliesser vor 9 Jahren 0
Authentifizierung: wer Sie sind, Autorisierung: Was können Sie tun? also möchte ich, dass die Benutzer, die sich nicht authentifiziert haben, gemäß ihrer IP oder der DB autorisiert werden Networker vor 9 Jahren 0
Ich persönlich würde das auf der Anwendungsebene implementieren, da es einfacher zu transportieren und zu testen ist. Charlie Schliesser vor 9 Jahren 1