Mitesh Shah
mshah at harpercollege.edu
Mon Feb 9 20:38:03 EST 2009
Sorry for the confusion. Well it was initially a CGI and then I learned about mod_python. Right now I haven't made any changes to the CGI until I learn how mod_python works. And all I need is the username and not the full name. When I tried -- os.environ["REMOTE_USER"] -- it never returned anything. I think I'm just having a hard time understanding the logistics of mod_python. I call an html and ask for authentication, this should set the cgi variable but since my python CGI is calling python (#!/usr/bin/python) separately, I don't think it can access the username from the initial authentication. Which brought me mod_python. Every example I see they change Apache's httpd.conf to point to the python script. And then this calls req.get_basic_auth_pw() and req.user and I am able to see the username. Basically I want the user to authenticate and be presented the html form and then post to my CGI(or soon mod_python) and then the python script would then grab the username via req.user. Thanks for you help so far. -Mitesh -----Original Message----- From: Graham Dumpleton [mailto:graham.dumpleton at gmail.com] Sent: Monday, February 09, 2009 7:21 PM To: Mitesh Shah Cc: mod_python at modpython.org Subject: Re: [mod_python] req.user always returns None 2009/2/10 Mitesh Shah <mshah at harpercollege.edu>: > I will take a look at mod_wsgi. Anyway, looking at the initial post I > realized that pw = req.get_basic_auth_pw() came AFTER req.user. I don't > know how many times I had read that this was incorrect and STILL did > it!! Anyway, I got it to work with that change. But this was all just > for testing. But now I realized that I may not be able to use this with > what I want to accomplish. > > 1) Use apache Authorization via .htaccess (which connects to Active > Directory) -- Working > 2) After the user is authenticated I have a form (html) with two fields > that posts to a python script. -- partially working (cannot log > username) When you say script, what is it implemented as, CGI or mod_python? If CGI, then user should be available as REMOTE_USER environment variable. If mod_python then as req.user. If these don't work then the AD module you are using for authentication is broken in not setting 'user' in Apache request structure properly. > The reason I looked into mod_python was that I am trying to pass the > user's name from the initial login to my python script. Any ideas on > how I could do this? Or are you after full name of user rather than a log in ID? Can you clarify a bit. Graham > Thanks, > Mitesh > > -----Original Message----- > From: Graham Dumpleton [mailto:graham.dumpleton at gmail.com] > Sent: Monday, February 09, 2009 5:35 PM > To: Mitesh Shah > Cc: mod_python at modpython.org > Subject: Re: [mod_python] req.user always returns None > > It is the authentication handlers responsibility, directly or > indirectly, to set req.user, it will not be set before the > authentication handler is called. Setting it is one of the things that > a correctly implement authentication handler should do. > > For the way you are doing things, req.user will only be set after: > > pw = req.get_basic_auth_pw() > > is called. Ie., done as a side effect of that call. > > BTW, if you are new to mod_python, you might want to consider instead > using mod_wsgi, writing your application code as a WSGI application > and using mod_wsgi's much simpler to understand authentication > provider hooks where everything is done for you except for validating > the user credentials. For the latter see: > > http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms > > Graham > > 2009/2/10 Mitesh Shah <mshah at harpercollege.edu>: >> I am having some issues trying to req.user to return a username. I am > very >> new to python and mod_python. I happened upon this thread: >> >> >> >> http://osdir.com/ml/python.mod_python/2003-10/msg00092.html regarding > a >> similar issue. >> >> >> >> Anyway, even when I ran the code posted by "David Hancock" in the post > above >> I only got a "None" for the username in the error_log file. I am > sending >> this in the URL: >> >> "http://localhost/python/mptest" >> >> >> >> Here is the test setup as it applies to me(basically unchanged). >> >> >> >> ******mptest.py******* >> >> from mod_python import apache >> >> >> >> def handler(req): >> >> req.content_type = 'text/plain' >> >> req.send_http_header() >> >> req.write("Hello, world!") >> >> return apache.OK >> >> >> >> def authenhandler(req): >> >> user = req.user >> >> pw = req.get_basic_auth_pw() >> >> req.log_error(str(user) + ' ' + str(pw)) >> >> if user == "fred" and pw == "secret": >> >> return apache.OK >> >> else: >> >> return apache.HTTP_UNAUTHORIZED >> >> *******mptest.py****** >> >> >> >> *******httpd.conf****** >> >> <Directory "/var/www/html/python"> >> >> AddHandler python-program .py >> >> PythonHandler mptest >> >> PythonAuthenHandler mptest >> >> AuthType Basic >> >> AuthName "mod_python restricted area" >> >> require valid-user >> >> PythonDebug On >> >> </Directory> >> >> ******httpd.conf******* >> >> >> >> *******error_log******* >> >> [Mon Feb 09 17:10:04 2009] [error] [client 127.0.0.1] None secret >> >> *******error_log******* >> >> >> >> After attempting to login I get a 401 page and then I am asked to > login >> again. >> >> >> >> Any help would be greatly appreciated! >> >> >> >> Thank you, >> >> Mitesh >> >> >> >> _______________________________________________ >> Mod_python mailing list >> Mod_python at modpython.org >> http://mailman.modpython.org/mailman/listinfo/mod_python >> >> >
|