Apache dazu veranlassen, ein Skript aufzurufen, um die Authentifizierung zu testen?

Apache dazu veranlassen, ein Skript aufzurufen, um die Authentifizierung zu testen?

Ich möchte den Zugriff auf bestimmte von Apache bereitgestellte Verzeichnisse beschränken. Der Client muss einen Benutzernamen und ein Passwort eingeben, aber dann soll Apache den eingegebenen Benutzernamen und das Passwort als Argumente an ein Python-Skript übergeben, das ich zur Authentifizierung geschrieben habe. Anschließend soll Apache basierend auf der Ausgabe des Skripts den Zugriff entweder zulassen oder verweigern. Ist das möglich?

Antwort1

Die einzige mir bekannte Möglichkeit hierfür ist die Verwendungmod_auth_externaloder mod_python. Mit dem ersten können Sie benutzerdefinierte Authentifizierungssysteme implementieren; mit dem zweiten erhalten Sie einen eingebetteten Python-Interpreter für Apache, mit dem SieSchreiben Sie ein benutzerdefiniertes Authentifizierungsskript. Keines von beiden ist ein Standardmodul, und es handelt sich auch nicht um ein sehr beliebtes Modul.

Jedoch...

am einfachsten wäre es, wenn Ihr Authentifizierungssystem einfach die von Apache verwendete Passwortliste aktualisiert. Apache verfügt über alle Tools, die Sie zum Hinzufügen/Aktualisieren/Löschen von Benutzern aus einer .htpasswd- oder .htdigest-Datei benötigen (es sollte trivial sein, die Befehle htpasswdoder htdigestin jedes Benutzerverwaltungssystem einzubinden).

Oderkönnen Sie mod_auth(das Standardauthentifizierungssystem von Apache) über die folgenden Module aus einer Datenbank lesen lassen:

Ich persönlich würde diesen Weg gehen, da er eleganter ist, als die Hashes Ihrer Benutzerkennwörter (hoffentlich speichern Sie nicht die Kennwörter selbst) in einer separaten Textdatei zu duplizieren, und die Erstellung eines neuen Authentifizierungssystems scheint wie eine Neuerfindung des Rades.

Antwort2

Sie können .htaccess verwenden, um den Zugriff auf bestimmte Verzeichnisse zu beschränken.

http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/

Sie müssen eine htpasswd-Datei erstellen, auf die Sie von der .htaccess-Datei aus verweisen

http://www.htaccesstools.com/htpasswd-generator/

Python: Es scheint eine Bibliothek zu geben, die htpasswd-Dateien verarbeiten kann:

http://pacopablo.com/wiki/pacopablo/blog/htpasswd-with-python

Mehr zu Python und htpasswd:

http://packages.python.org/passlib/lib/passlib.apache.html

Ich kenne mich mit Python nicht aus und kann Ihnen keine vollständige Lösung anbieten. Ich denke jedoch, dass es möglich ist und wahrscheinlich nicht zu kompliziert ist, wenn Sie mit Python vertraut sind und ein bisschen googeln.

verwandte Informationen