[Twisted-Python] Question on pamauth.py

Duncan McGreggor duncan.mcgreggor at gmail.com
Tue May 2 22:39:01 MDT 2006


On May 1, 2006, at 7:28 AM, Terry Jones wrote:

> I'm planning to use twisted.cred and just went to look for ways to
> implement a back end credentials checker that I could plug in. I soon 
> ran
> across mentions of pamauth.py, and was pleasantly surprised to find it
> sitting in my Twisted-2.2.0/twisted/cred/pamauth.py
>
> But, I don't see a mention of how to use it.

The really great thing about cred is that it works the same regardless 
of the underlying authentication mechanism. I suggest writing a couple 
toy examples and plugging those into your twisted app, just to get a 
feel for how things work. In the process you will gain genuine 
knowledge (as opposed to "a feel").

You probably wouldn't ever need to use twisted.cred.pamauth. You would 
use the twisted.cred.checkers.PluggableAuthenticationModulesChecker, 
and that works just like, well, a cred checker :-)

You biggest problem is actually going to be getting PyPAM working. As 
far as I know, and as far as tummy.com knows (the original sponsors of 
PyPAM), there's been no release since 1999. I toyed with the idea of 
using it at one point, but the amount of work necessary in updating the 
python was too onerous. Perhaps you have a stronger stomach than I :-)

> If I want to build a web site where users authenticate themselves
[snip]
> cookie
[snip]
> But what if a user is trying to run a command line app
[snip]

If I'm understanding what you are asking, this isn't a cred question. 
cred is cred. It handles avatars/ids, realms, portals, etc. You can put 
anything you want in your realm (or checker, or...). It's up to you to 
provide/restrict resources based on that and it's up to you to decide 
what to do about persisting authentication information.

> Can anyone point me to Twisted code that does something like this?

I'm totally not being snotty when I say this (again): cred is cred. One 
of the really great things about it is how easy it is to do whatever 
you want. You can create interfaces that represent groups, have a 
single realm and set/check interfaces, have different realms for 
different levels of access, etc. You can have your resources implement 
your group/role interfaces. There's all kinds of stuff you can do, it 
really depends on your needs. Once you are comfortable with it and have 
written a few working toys/examples, you will see the potential. 
Writing the code necessary to plug your twisted app into somebody 
else's authentication system can be easier than doing it any other way 
(given that you are working with open, sane standards). I've actually 
written working cred code faster than other project members have 
*configured* (GUI) the user management systems I was writing against.

Here's a great resource:
   http://twistedmatrix.com/projects/core/documentation/howto/cred.html

And if you don't have the O'Reilly twisted book, do yourself a favor 
and pick up a copy. Abe did a wonderful job explaining cred very 
clearly in it.

Good luck!

d





More information about the Twisted-Python mailing list