Access Controllers
- Introduction
- Defining the Role in lenya.roles
- Declaring an AccessController in cocoon.xconf
- Default Access Controller
- Bypassable Access Controller
- Customizing Access Control
Introduction
An AccessController has the responsibility to authenticate clients and to authorize requests.
Defining the Role in lenya.roles
<role name="org.apache.lenya.ac.AccessController" shorthand="access-controller" default-class="org.apache.lenya.ac.impl.BypassableAccessController"/>
Declaring an AccessController in cocoon.xconf
Each AccessController component needs a type that is attached to the
role
attribute, separated with a slash (/). This allows you to choose an
AccessController in your publication in combination with the
PublicationAccessControllerResolver.
The following example shows the declaration of an AccessController with
the type bypassable:
<component logger="lenya.ac.accesscontroller.bypassable" class="org.apache.lenya.ac.impl.BypassableAccessController" role="org.apache.lenya.ac.AccessController/bypassable"> ... </component>
Default Access Controller
The DefaultAccessController combines an Authenticator, a set of Authorizers, an AccreditableManager and a PolicyManager to perform these tasks.
<component logger="lenya.ac.accesscontroller.default" class="org.apache.lenya.ac.impl.DefaultAccessController" role="org.apache.lenya.ac.AccessController/default"/>
Bypassable Access Controller
The BypassableAccessController is a DefaultAccessController that can be bypassed for certain URL patterns. For URLs that match those patterns (regular expressions), access is granted for free.
The BypassableAccessController allows the definition of a regular expression for the public URL patterns:
<component logger="lenya.ac.accesscontroller.bypassable" class="org.apache.lenya.ac.impl.BypassableAccessController" role="org.apache.lenya.ac.AccessController/bypassable"> <public>.*[.]css|.*[.]jpg|.*[.]gif</public> </component>
Customizing Access Control
How can I store my users in a database?
You have to implement a UserManager wich accesses the database
to obtain the user information. Additionally, you have to implement an
AccreditableManager which uses this UserManager. This
AccreditableManager has to be declared in
cocoon.xconf
and assigned to your
AccessController in
lenya/pubs/mypub/config/ac/ac.xconf
.