CGIHTTPServer - Authentifizierung

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Vortec
User
Beiträge: 52
Registriert: Dienstag 10. Dezember 2002, 11:54

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
| [url=http://www.sourceforge.net/projects/propolice/]propolice[/url] | [url=http://del.icio.us/vortec/]bookmarks[/url] | [url=http://www.BlowIRC.net/]irc[/url] | [url=irc://irc.BlowIRC.net/python]#python[/url] |
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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...
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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

.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

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
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Das ist eine {Basic,Digest} Access Authentication und funktioniert mit HTTP-Headern. Wird im bereits von Jens verlinkten RFC-2617 beschrieben.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Wenn der Browser einen 401-Statuscode erhält, poppt er afaik automatisch einen entsprechenden Dialog auf.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

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.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

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!
Zuletzt geändert von roschi am Samstag 11. Oktober 2008, 20:09, insgesamt 1-mal geändert.
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mit CGI?

Code: Alles auswählen

print "Key: Value"
Ansonsten hängt es natürlich ab ob du ein Framework benutzt oder nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

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
Zuletzt geändert von roschi am Samstag 11. Oktober 2008, 20:08, insgesamt 1-mal geändert.
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
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 ;)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

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
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Antworten