[Zope-PAS] Challenge implementation: Test results

Zachery Bir zbir at urbanape.com
Wed Sep 1 10:11:07 EDT 2004


On Sep 1, 2004, at 10:07 AM, Lennart Regebro wrote:

> Zachery Bir wrote:
>> I don't know where the confusion is coming from that this is going to 
>> force double-authentication. The only reason to do the traversal hook 
>> is to capture the unauthorized and deal with it locally before 
>> handing it back up to the Publisher.
>> Read the sources of CookieCrumbler. We're not going to force 
>> double-authentication.
>
> Ah, sorry, I mix up two different but related issues:
>
> Issue one:
> Handling unauthorized, and making it call the challenge plugins. This 
> can be done in before traverse, or in validate. Doesn't matter to me. 
> Validate seems less magic, I think, but that is just an opinion.
>
> Issue two:
> If you let BasicRequest.traverse handle the validation, unauthorized 
> *must* raise an exception. This means that you are limited to doing 
> the challenge by either raising Unauthorized, or Redirect. raisning 
> unathorized will of course provoke a Basic HTTP challenge, so 
> challenge plugins are really restricted to doing a redirect. You can 
> not, for example, return a different page body, or anything like that. 
> You *must* "raise Redirect, url". This seems a bit limited to me.

No, you're only limited to the challenge plugins you write. It can be a 
redirect (a la CC), it could be a digest challenge, if the user agent 
supports it, it could be a Basic HTTP challenge, or it could be an 
XML-RPC request to some other process somewhere. All that's important 
is that we get a chance to do what we need, rather than letting it go 
up to the ZPublisher.

> What was discussed briefly yesterday was to authenticate in 
> before_traverse, and if that failed do a challenge. But that would 
> result in authenticating twice, which seems less that perfect.

Yeah, that's not what we want.

Zac



More information about the Zope-PAS mailing list