Seite 1 von 1

problems with cherrypy`s http auth using wsgiref

Verfasst: Donnerstag 31. Juli 2008, 11:27
von Costi
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

Re: problems with cherrypy`s http auth using wsgiref

Verfasst: Donnerstag 31. Juli 2008, 12:05
von gerold
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: Alles auswählen

    <Location /adressen>
        AuthType basic
        AuthName "Adressen"
        AuthBasicProvider file
        AuthUserFile /home/gerold/halvar/adressen/.allowed_users
        Require valid-user
    </Location>
mfg
Gerold
:-)

Verfasst: Donnerstag 31. Juli 2008, 12:56
von lunar
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.

Verfasst: Donnerstag 31. Juli 2008, 13:09
von Costi
vielen dank fuer die antworten, dass war mir eine sehr grosse hilfe :D