[Zope] hasRole bug or feature in 2.2.?

Chris McDonough chrism@digicool.com
Sat, 13 Jan 2001 16:35:41 -0500


Thank god for Dieter.  :-)

I'll trust that you're right, Dieter, because reading the traversal
machinery code makes my head hurt.  :-)

----- Original Message -----
From: "Dieter Maurer" <dieter@handshake.de>
To: "Chris McDonough" <chrism@digicool.com>
Cc: <zope@zope.org>
Sent: Friday, January 12, 2001 5:00 PM
Subject: Re: [Zope] hasRole bug or feature in 2.2.?


> Chris McDonough writes:
>  > You didn't protect the isMember document.  It's viewable by Anonymous.
The
>  > Zope security machinery short-circuits authentication for resources
that
>  > don't require it.  This means that when you view a resource that's
>  > unprotected, you view it "as Anonymous".  Anonymous doesn't have the
Member
>  > role, so you see "You are NOT a Member" when you view /isMember.
>  >
>  > I don't particularly like this behavior, but it seems not to bother
anyone
>  > else.  I think it should authorize you and set AUTHENTICATED_USER if
you
>  > pass in auth info regardless of the protection on the resource you're
trying
>  > to view.
> It would bother me a lot, if you were right :-)
>
> Fortunately, you are not completely right.
>
> What really happens is the following:
>
>   when ZPublisher has located the object addressed by
>   the request URL, it starts going back its way
>   along PARENTS to find a UserFolder that can
>   authenticate a user with sufficient permissions
>   to call the object.
>
>   If the object is unprotected, then no permissions
>   are required. In this case, the top level
>   UserFolder will return "Anonymous",
>   if it is reached and it cannot authenticate the
>   user.
>   Therefore, an unprotected object can be
>   called by Anonymous and in this case,
>   "hasRole" is that of "Anonymous", as Chris
>   reported.
>
>   However, if previously a protected object
>   has been accessed, then your browser may (and usually
>   will) send Authentication information with
>   all following requests.
>   A UserFolder will use this information (if present)
>   to authenticate the user, even if no permissions
>   are necessary for object access.
>   If successful, AUTHENTICATED_USER will not
>   be "Anonymous" even though the accessed object
>   is unprotected.
>
>
> Dieter
>
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )
>
>