problems with cherrypy`s http auth using wsgiref

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

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: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
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.
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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