Frage

Ich möchte Benutzer WebDav Zugang zu geben, Apache, aber ich möchte, dass sie zuerst autenticate und jeder Benutzer Zugriff auf einen bestimmten Ordner geben. Alle Authentifizierung muss gegen eine Django-basierte Datenbank erfolgen. Ich kann die Django-Authentifizierung arbeiten, mich bekommen, aber ich muss mit dem Teil helfen, wo ich jeden Benutzer authentifizieren und sie mit einem dedizierten webdav benutzerspezifischen Bereich.

Für Hinweise?

War es hilfreich?

Lösung

Sie können feststellen, dass die Apache mod_authn_dbd Modul gibt Ihnen, was Sie wollen. Dieses Modul ermöglicht eine SQL-Datenbank zur Authentifizierung und Autorisierung Apache überprüfen. Sie würden diese Richtlinie in der <Location> verwenden, <Directory> (etc) Bereich, den Sie zu schützen versuchen:

<Directory /usr/www/myhost/private>
    # other config ere
    # mod_authn_dbd SQL query to authenticate a user
    AuthDBDUserPWQuery \
         "SELECT password FROM authn WHERE user = %s"
 </Directory>

Genau genommen, dies bedeutet, dass Sie die Authentifizierung gegenüber Djangos Datenbank, nicht gegen die Django App selbst. Beachten Sie, dass Sie die volle Kontrolle über die Abfrage haben, so können Sie es mit anderen Parametern in allen Tabellen kombinieren, um sicherzustellen, dass der Benutzer eines guten Ruf, oder in bestimmten Gruppen, oder was auch immer, bevor die Authentifizierung.

Sie müssen möglicherweise um ein wenig Aufhebens um sicherzustellen, dass die verwendeten Hash-Mechanismen sind die gleichen sowohl in Apache und django.

Wenn dies nicht zusagt, sollten Sie die Authentifizierung aus der django Datenbank in bewegte, sagen wir, einen LDAP-Server. Mit einem benutzerdefinierten Authentifizierungs-Backend (es werden vorhandene LDAP-Implementierungen für django da draußen), django wird gerne LDAP verwenden ... und LDAP Auth / Auth Unterstützung in Apache ist ziemlich robust.

Andere Tipps

Als erste für Sie andere Leser, meine Authentifizierung gegen Django getan wurde mit einem http://my-server.com/webdav-url/ erhält der Anwender ein Login-Prompt und wird dann in einem Unterverzeichnis auf die WebDAV-Wurzel, mit den gleichen Namen wie ihr Benutzername landen. LA-U: macht Apache "look ahead" und lassen den Benutzer Zeichen in vor die Montage Weg zu bestimmen, die da von entscheidender Bedeutung ist, dass Pfad auf dem Benutzernamen abhängt. Ohne eine Rewrite-Regel wird es keine URL sein, und der Benutzer wird keine Anmeldeaufforderung erhalten. Mit anderen Worten, vermeidet LA-U ein Catch-22 für diese Art von Login Handhabung.

Vorsichtsmaßnahmen : erfordert mod_rewrite aktiviert werden, und Benutzernamen müssen dir Namen ohne Änderung gültig sein. Außerdem werden die Benutzer dirs nicht durch diese Befehle automatisch erstellt werden, so dass ihre Existenz muss auf andere Weise sichergestellt werden.

Ich weiß, diese Frage ist alt, aber nur als Ergänzung ... Wenn Sie mod_python verwenden, können Sie auch interessieren „ Authentifizieren gegen Djangos Benutzerdatenbank von Apache " Abschnitt von Django-Dokumentation.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top