[mod_python] PythonAuthzHandler not working

Graham Dumpleton grahamd at dscpl.com.au
Thu Apr 20 21:50:35 EDT 2006


Jim Gallacher wrote ..
> I've been pulling my hair out all day trying to get PythonAuthzHandler
> to work and I'm either missing something obvious or there is a problem
> with mod_python. What the heck is the magic required to make Apache call
> my authzhander? Using Apache 2.0.55 with the latest 3.3.0-dev, all my 
> handlers including authenhandler get called, *except* for authzhandler.
> 
> <Directory /srv/projects/aos/html/aos-admin/>
>    DirectoryIndex index.py
>    AllowOverride None
>    AddHandler mod_python .py
> 
>    AuthType PyCookie
>    AuthName "Restricted"
>    Require valid-user
>    Require admin
> 
>    PythonAccessHandler mprest.authtest
>    PythonAuthenHandler mprest.authtest
>    PythonAuthzHandler mprest.authtest
>    PythonHandler mprest.authtest
> 
> </Directory>
> 
> authtest.py contains the appropriate handlers that do nothing more than
> call req.log_error().
> 
> To aid in my efforts I modified python_handler in mod_python.c to log 
> the status of each phase.
> 
> Simplified error_log output:
> 
> $ cut -f 4 -d "]"  error.log
> mod_python.c python_handler: DECLINED PythonInitHandler phase
> mod_python.c python_handler: DECLINED PythonPostReadRequestHandler phase
> mod_python.c python_handler: DECLINED PythonTransHandler phase
> mod_python.c python_handler: DECLINED PythonHeaderParserHandler phase
> mod_python.c python_handler: PROCESS  PythonAccessHandler phase
> authtest.py  accesshandler called
> mod_python.c python_handler: PROCESS  PythonAuthenHandler phase
> authtest.py  authenhandler called
> mod_python.c python_handler: DECLINED PythonFixupHandler phase
> mod_python.c python_handler: PROCESS  PythonHandler phase
> authtest.py  handler called
> mod_python.c python_handler: DECLINED PythonLogHandler phase
> mod_python.c python_handler: DECLINED PythonCleanupHandler phase
> 
> 
> Please save me before I've gone completely bald. Otherwise at that point
> I'll have to start poking myself with a pointed stick. Madness can't be
> too far off in my future. :)

Behaviour confirmed.

I don't have much hair left already.

What is stranger is that if you use:

#PythonAccessHandler handlers
#PythonAuthenHandler handlers
#PythonAuthzHandler handlers
#PythonHandler handlers
PythonHandlerModule handlers

you get a 500 error and the Apache log file says:

[Fri Apr 21 11:45:13 2006] [crit] [client ::1] configuration error:  couldn't check user.  No user file?: /~grahamd/authz/index.py

Using the new module importer with its slightly different treatment of
handler responses makes no difference.

Note that I have the following in my authenhandler().

  req.user = "dummy"
  req.ap_auth_type = "dummy"

If I don't, I get a 500 error and:

[Fri Apr 21 11:48:25 2006] [error] [client ::1] python_handler: After PythonAuthenHandler req->user is NULL. Assign something to req.user if returning OK to avoid this error.

This error is actually from mod_python and was originally a fudge from
some problem with Apache from back in time. Maybe it should be
removed as comments suggest it should have been at some point.

Time to start augmenting Apache itself with some debug logging
as it all does make a great deal of sense. :-(

More later.

Graham


More information about the Mod_python mailing list