Django / Lighttpd und Authentifizierung

28/03/2010 - 13:52 von Timothy Kesten | Report spam
Hi Folks,

ich habe ein Django-Projekt - lief bisher mit dem "integrierten" Server -
jetzt umgestellt auf Lighttpd.
Soweit alles klar.
Da der Zugriff auch über das Internet erfolgen soll brauche ich eine
vernünftige Absicherung.
Lighty bietet ja so etwas. Und das geht auch (mod_auth / htdigest).

Mir schwebt eigentlich vor, eine index.html - Datei als Einstieg in einem
(dem) geschützten Verzeichnis. Diese leitet automatisch weiter an ... ja,
wohin?
Irgendwie den Anmeldenamen (REMOTE_USER?) erkennen. Diesen in der Django-
Session plazieren und Django-Views nur zulassen, wenn diese Session-Variable
gesetzt ist.
(Damit nicht die Views (URL) direkt eingegeben werden können, bzw. diese
dann feststellen, dass die Sessionvariable ja nicht gesetzt ist und weiteren
Zugriff verweigern).

Ist das zu quer gedacht?

Aber wie komme ich jetzt über die mod_auth-Anmeldung an mein Django-Projekt.
Denn Lighty leitet ja gleich alles NICHT_statische an Django um, so dass
mod_auth gar nicht greift.

Soweit verstàndlich ausgedrückt?
Hoffentlich nicht zu konfus.

Bin für Tipps dankbar

Timothy
 

Lesen sie die antworten

#1 Thomas Guettler
29/03/2010 - 16:58 | Warnen spam
Timothy Kesten wrote:
Hi Folks,

ich habe ein Django-Projekt - lief bisher mit dem "integrierten" Server -
jetzt umgestellt auf Lighttpd.
Soweit alles klar.
Da der Zugriff auch über das Internet erfolgen soll brauche ich eine
vernünftige Absicherung.
Lighty bietet ja so etwas. Und das geht auch (mod_auth / htdigest).

Mir schwebt eigentlich vor, eine index.html - Datei als Einstieg in einem
(dem) geschützten Verzeichnis. Diese leitet automatisch weiter an ... ja,
wohin?
Irgendwie den Anmeldenamen (REMOTE_USER?) erkennen.



Was für eine Authentifizierungsmethode verwendest du? REMOTE_USER wird
nur bei http-basic auth verwendet. Da kommt ein (hàssliches) Pop-Up Fenster
des Browsers. In der Regel verwendet man das heutzutage nicht mehr.

Falls du die cookie-basierte Methode verwendest: Woher soll lighttpd wissen,
zu welchem User der Request gehört? Es gibt nur eine Möglichkeit: der
Webserver muss sich mit der Django WSGI-Anwendung "unterhalten".

Für Apache und mod_wsgi gibt es eine entsprechende API.

Oder du lieferst du lieferst auch den statischen Inhalt über
wsgi aus. Für Webseiten mit wirklich viel Traffic ist das nicht
sinnvoll, aber ansonsten ist das kein Problem.

Hier findest du einen Anhaltspunkt wie man statischen Inhalt über
Django ausliefern kann:
http://code.djangoproject.com/ticket/6485

Alles was keine Autorisierung benötigt (zB CSS, JS) natürlich in das
ungeschützte "media" Verzeichnis legen. Das kann dann der Webserver
der Wahl direkt ausliefern.

Gruß,
Thomas

Thomas Guettler, http://www.thomas-guettler.de/
E-Mail: guettli (*) thomas-guettler + de

Ähnliche fragen