problems with cherrypy`s http auth using wsgiref

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

problems with cherrypy`s http auth using wsgiref

Beitragvon Costi » Donnerstag 31. Juli 2008, 11:27

ich werd noch wahnsinnig

hier ist Gerold`s beispiel (http://www.python-forum.de/viewtopic.php?p=99420)
angepasst fuer die benutzung von cgi:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import cherrypy
import wsgiref.handlers
import atexit

class Root(object):
   
    def index(self):
        retval = 'Wenn du diesen Text siehst, dann bist du als "%s" eingelogt.'
        return retval % cherrypy.request.login
   
    index.exposed = True

   

conf = {
        "/": {
            "tools.digest_auth.on": True,
            "tools.digest_auth.realm": 'localhost',
            "tools.digest_auth.users": {
                "test": "test",
            }
        },
    }

cherrypy.config.update(conf)
cherrypy.config.update({'environment': 'embedded'})

if cherrypy.engine.state == 0:
   cherrypy.engine.start(blocking=False)
   atexit.register(cherrypy.engine.stop)

app = cherrypy.tree.mount(Root(), config = conf)
wsgiref.handlers.CGIHandler().run(app)


das problem ist, dass auch wenn ich als benutzer und password "test" eingebe, firefox mich nochmal nach dem benutzer und pwd fragt

ich benutze CherryPy 3.0.2
cp != mv
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: problems with cherrypy`s http auth using wsgiref

Beitragvon gerold » Donnerstag 31. Juli 2008, 12:05

Costi hat geschrieben:das problem ist, dass auch wenn ich als benutzer und password "test" eingebe, firefox mich nochmal nach dem benutzer und pwd fragt

Hallo Costi!

Ich kann dein Problem nachvollziehen. Zum Testen habe ich dieses Skript http://paste.pocoo.org/show/80798/ verwendet.

Anscheinend funktioniert das nicht über CGI und FastCGI. Du kannst ja den Mechanismus des Apachen dafür verwenden.

Hier ein Auszug aus einer meiner Apache-Konfigurationsdateien:
[code=] <Location /adressen>
AuthType basic
AuthName "Adressen"
AuthBasicProvider file
AuthUserFile /home/gerold/halvar/adressen/.allowed_users
Require valid-user
</Location>[/code]
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lunar

Beitragvon lunar » Donnerstag 31. Juli 2008, 12:56

CGI reicht den HTTP-Auth-Header nicht durch. Das wurde mit bedacht so eingerichtet, damit CGI-Skripte in Shared-Hosting-Umgebungen nicht an die Authentifizierungsdaten anderer Nutzer gelangen können. Ich weiß nicht, ob man das einschalten kann.

FCGI erlaubt dagegen, den Auth-Header durchzulassen (-pass-header Authorization). Allerdings wird der Header in der Variable "Authorization" gespeichert, und nicht wie in WSGI verlangt, in "HTTP_AUTHORIZATION". Entweder fixt das Framework das selbst, oder man muss halt eine entsprechende Middleware schreiben.
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Donnerstag 31. Juli 2008, 13:09

vielen dank fuer die antworten, dass war mir eine sehr grosse hilfe :D
cp != mv

Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot]