Seite 1 von 1

CGIHTTPServer - Authentifizierung

Verfasst: Sonntag 8. Mai 2005, 18:23
von Vortec
Hallo,

ich suche eine Möglichkeit via CGIHTTPServer bzw. BaseHTTPServer meinen Usern einen Login zu ermöglich. Wie dieser Login ausschaut ist mir relativ egal, es kann also ein Form auf der Seite selbst oder eine Basic HTTP (aufpoppendes Fenster)-Lösung sein. Wenn jemand so etwas schonmal gemacht hat oder sonstige Tips geben kann, wäre ich für jede Antwort dankbar.

Grüße,
Vortec

Verfasst: Donnerstag 8. September 2005, 21:03
von jens
Da bietet IMHO CGIHTTPServer bzw. BaseHTTPServer keine Möglichkeiten für...
Du must es einfach per CGI selber Programmieren... Im einfachsten Fall eine Text-Datei mit den Usernamen und Passwörtern ablegen und diese abgleichen...

Verfasst: Donnerstag 8. September 2005, 23:31
von mitsuhiko
jens hat geschrieben:Da bietet IMHO CGIHTTPServer bzw. BaseHTTPServer keine Möglichkeiten für...
Du must es einfach per CGI selber Programmieren... Im einfachsten Fall eine Text-Datei mit den Usernamen und Passwörtern ablegen und diese abgleichen...
Da muss ich doch wiedersprechen.
CGIHTTPServer hat doch sicher eine Funktion, die Requests entgegen nimmt.
Da kann man doch eine HTTP Authentifizierung im Header mitsenden.
Muss aber erstmal sehen, wie der Header dahingehend aussehen müsste...

Verfasst: Freitag 9. September 2005, 06:28
von jens
blackbird hat geschrieben:CGIHTTPServer hat doch sicher eine Funktion, die Requests entgegen nimmt. Da kann man doch eine HTTP Authentifizierung im Header mitsenden.
Hmmm! Daran habe ich überhauptnicht gedacht... Es ist doch immer wieder erstaunlich, wie einfach doch HTTP und andere Protokolle funktionieren...

Hab spontan das gefunden:
http://php3.de/manual/de/features.http-auth.php
http://www.ietf.org/rfc/rfc2617.txt

Verfasst: Freitag 16. Mai 2008, 23:38
von roschi
hallo!

ich wollte dieses thema mal wieder aufgreifen...
ich bin gerade dabei, etwas zu schreiben, das ich dann mittels cgi auf einem server ausfuehren will. nun brauche ich aber auch authentifizierung. und wie aus diesem thread bereits hervorging, gibt es wohl die moeglichkeit, eine authentifizierungsaufforderung an den browser zu senden. sind das dann diese huebschen fenster, die sich im firefox, internet explorer, ... oeffnen, und zur eingabe von benutzername und passwort auffordern? wenn ja, wie genau koennte man so etwas realisieren? aus den o. g. links bin ich nicht so recht schlau geworden. :(

mfg
roschi

Verfasst: Samstag 17. Mai 2008, 12:40
von jens
Die einfachste Sache wäre per .htaccess einen Login zu regeln: http://httpd.apache.org/docs/2.0/howto/auth.html

Ansonsten bieten Frameworks wie z.B. django alles was man braucht.

Verfasst: Samstag 17. Mai 2008, 15:45
von gerold
jens hat geschrieben:Die einfachste Sache wäre per .htaccess einen Login zu regeln: http://httpd.apache.org/docs/2.0/howto/auth.html
Ansonsten bieten Frameworks wie z.B. django alles was man braucht.
Hallo!

Ja, das ist wirklich ein Grund von CGI abzulassen. Sobald du mit Authentifizierung und Sessions zu tun hast, ist CGI einfach zu weit unten. Das ist der richtige Zeitpunkt auf ein Framework wie Django, oder wenns kleiner sein soll, auf CherryPy umzusteigen.

mfg
Gerold
:-)

PS: http://www.python-forum.de/post-99357.html

.

Verfasst: Sonntag 18. Mai 2008, 09:15
von roschi
hallo!

ja, der login muss ja nicht unbedingt mit cgi gemacht werden. aber wie wird denn z. b. dieser geregelt?
http://opensvn.csie.org/kruvion/

ich nutze auch kein apache, weil ich was haben moechte, was aus reinem python besteht. wie macht denn apache das?

mfg
roschi

Verfasst: Sonntag 18. Mai 2008, 09:22
von Trundle
Das ist eine {Basic,Digest} Access Authentication und funktioniert mit HTTP-Headern. Wird im bereits von Jens verlinkten RFC-2617 beschrieben.

Verfasst: Sonntag 18. Mai 2008, 14:39
von Y0Gi
Wenn der Browser einen 401-Statuscode erhält, poppt er afaik automatisch einen entsprechenden Dialog auf.

Verfasst: Sonntag 18. Mai 2008, 14:49
von Trundle
Y0Gi hat geschrieben:Wenn der Browser einen 401-Statuscode erhält, poppt er afaik automatisch einen entsprechenden Dialog auf.
Der Server schickt noch einen ``WWW-Authenticate``-Header mit. Ohne bringt der Browser den Dialog nicht.

Verfasst: Sonntag 18. Mai 2008, 19:08
von Y0Gi
Jener Header ist afaik dafür da, zwischen Basic/Digest/Sonstwas-Auth zu unterscheiden. Abhängig davon könnte der Browser natürlich unterschiedlich reagieren. Ob mit oder ohne diesen der gewünschte Dialog aufpoppt oder nicht, ist allerdings insofern irrelevant, weil nur mit beidem (Statuscode und der Header) zusammen ein Schuh draus wird.

Verfasst: Freitag 23. Mai 2008, 16:06
von roschi
hallo!

entschuldigt bitte, dass ich mich so lange nicht gemeldet habe.

ja, aber wie kann ich nun einen solchen statuscode und header senden?
es waere schoen, wenn ihr code posten wuerdet.

mfg
roschi

PS: danke, dass ihr mir schon soweit geholfen habt!

Verfasst: Freitag 23. Mai 2008, 17:42
von Leonidas
Mit CGI?

Code: Alles auswählen

print "Key: Value"
Ansonsten hängt es natürlich ab ob du ein Framework benutzt oder nicht.

Verfasst: Freitag 23. Mai 2008, 18:59
von roschi
hallo!

ich nutze kein framework. ich moechte nur eine authentifizierungsaufforderung senden, und dann pruefen, ob die eingaben korrekt waren. (ja, mit cgi)

wenn ja: seite anzeigen
wenn nein: fehler

mfg
roschi

Verfasst: Freitag 23. Mai 2008, 19:35
von lunar
Y0Gi hat geschrieben:Jener Header ist afaik dafür da, zwischen Basic/Digest/Sonstwas-Auth zu unterscheiden. Abhängig davon könnte der Browser natürlich unterschiedlich reagieren. Ob mit oder ohne diesen der gewünschte Dialog aufpoppt oder nicht, ist allerdings insofern irrelevant, weil nur mit beidem (Statuscode und der Header) zusammen ein Schuh draus wird.
Man kann auch prima 401 ohne WWW-Authenticate zurücksenden. Ob das Sinn macht, sei mal dahin gestellt, möglich ist es.

Der Browser wird dann keine Authentifizierungsinformationen vom User erfragen, weil die Website ja nicht nach Authentifizierung verlangt ;)

Verfasst: Samstag 24. Mai 2008, 15:31
von Y0Gi
Joa, 401 könnte separat auch Sinn ergeben, etwa wenn der Client auf einem anderen (ihm vielleicht bekannten) Weg die Authentifizierung durchführen soll (z.B. ein Cookie mitsenden).

Wenn die Website nicht nach Authentifizierung verlangt, dann könnte man auch einen 403 senden.

Verfasst: Freitag 30. Mai 2008, 17:43
von roschi
hallo!

ok, ich denke, dass ich dann doch lieber die variante von apache nehme. scheint mir mit python doch nicht so ganz einfach...

danke fuer die hilfe

mfg
roschi