[Zope-PTK] Stability rule-of-thumb (fwd)

Stuart 'Zen' Bishop zen@cs.rmit.edu.au
Fri, 4 Feb 2000 14:29:44 +1100 (EST)


On Thu, 3 Feb 2000, Phillip J. Eby wrote:

> >Hehe... 'a folder containing the appropriate methods' is quite an
> >apt description of GUF in its present state. If you develop this, GUF can 
> >be frozen and depricated provided the hooks are called using the DTML Method 
> >calling conventions (context,REQUEST as the first two parameters)
> 
> with a model for a "Universal User Folder" that we're going to try and
> document Real Soon Now (like starting tomorrow).  The validation bits of
> GUF could be recast as a validator, and the rest could pretty much go away.
>  The model looks something like this:

One thing to think of (cut & paste from previous email with Michael):

    The original design and scope of GUF was to allow seperation of the 
    following:
	authentication (username & password)
	authentication (valid domains)
	authorization (role membership)
	listing valid users

    In particular, I needed to pull a list of users and role membership from
    my Oracle server, and dynamically authenticate via one of two Radius
    servers (choice of Radius server being dependant on role membership - thus
    GUF had to support arbitrary code).

    So in an ideal world, we would need four pluggable components:
	userList + userExists
	userRoles
	userAuthenticate
	userDomains

    A pluggable backend (a buttplug?) would need implement one or more of these
    hooks. The pluggable backend would actually be 1-5 classes that implement
    the __call__ method (so they can be dropped in instead of the default DTML
    methods)

    GUF needs to be able to handle multiple backends. For example, a Radius
    backend could only ever implement the userAuthenticate hook, so would
    also need to be combined with another.

Do you envisage being able to support a backend like Radius that can
only handle part of the role of a validator? Or will situations like
this require a GUF-like validator (folder containing DTML/Python/External
methods)?

Being able to mix'n'match backends would increase power, but decrease
friendlyness (a requirement for PTK).

> 	* has validate() method which strictly looks at the request for
> authentication tokens (e.g. cookies) or login fields

It would be nice if the UUF would also try breaking down the cookies/login
fields for you. Most of the validators would prefer just being able to
say yes/no to a username & password combination rather all of them
needing the intelligence to decode the cookie,basic auth and form data.
It can be done securely once rather than cut & paste, and validators
would instantly support new authentication-passing mechanisms.

It would also be nice if you stole my token authentication code and made
it an option so we can turn off storing username & password in the cookies.
One advantage besides security of this method is that Zope can determine if
a username/password combination is valid rather than having to talk to
a possibly slow validator. Spamming my Radius or NDS servers with a request 
for every hit is really not an option. Username/password caching cannot
be done for systems using any sort of one-time password scheme.

-- 
 ___
   //     Zen (alias Stuart Bishop)     Work: zen@cs.rmit.edu.au
  // E N  Senior Systems Alchemist      Play: zen@shangri-la.dropbear.id.au
 //__     Computer Science, RMIT 	 WWW: http://www.cs.rmit.edu.au/~zen