Search:

Apache » Lenya
project logo
  • Project
  • Developer
  • Community
  • Version 2.0
  • Version 1.2
  • Version 1.2
    • Installation
      • Download
      • Subversion Access
      • Install Instructions
    • Tutorial
      • Introduction
      • 1. Understanding Lenya
      • 2. Installing Lenya
      • 3. Anatomy of the Pipeline
      • 4. Editing in Lenya
      • 5. Custom Navigation in Lenya
      • 6a. Mod Proxy and Lenya
      • 6b. Mod Proxy and Lenya
    • How-To
      • FAQ
      • New Publication
      • Deploy Publication
      • Look and Feel
      • Custom Resource Type
      • Adding Mime Types
      • Site Navigation
      • LDAP Authentication
      • CMS Menus
      • CMS Screens
      • Search Publications
      • External Data
      • Unit Tests
    • Components
      • Access Control
        • Basic Terms
        • Access Controllers
        • Access Controller Resolvers
        • Authenticators
        • Authorizers
        • Policies and Policy Managers
        • Accreditable Managers
        • SSL Encryption
      • Authoring
        • Adding a new document creator
        • Image Upload
        • OpenOffice
      • Deployment
        • Proxying
      • Editors
        • HTML Form Editor
        • HTML One Form Editor
        • Bitflux Editor
        • Kupu
        • Xopus
      • Layout
        • Navigation
        • XHTML templating
        • Serving static resources
        • Lenya Menubar
      • Publication
        • PageEnvelopeModule
        • Site tree
      • Resource Types
        • Resource Types
      • Revision Control
        • Revision Controller
        • RCML
        • Check In
        • Check Out
        • Revisions
        • Rollback
      • Repository
        • WebDAV Servers
      • Search
        • Searching with Lucene
      • URI Handling
        • URI Parametrizer
        • URI Scheme
        • Usecases
      • Asset Management
        • Asset Management
      • Link Management
        • Link Management
      • Meta Data
        • Meta Data Handling
      • Multilingual Documents
        • Multilingual Document Handling
      • Tasks
        • The Task Concept
        • Defining Tasks
        • The TaskAction
        • Scheduling a Task
        • Included tasks
          • AntTask
          • DefaultFilePublisher
          • StaticHTMLExporter
          • MailTask
        • Developing Tasks
      • Workflow
        • Terms
        • The State Machine
        • Configuration
        • Implementation
      • Site Management
        • Archive
        • Copy
        • Deactivate
        • Delete
        • Delete the trash
        • Move
        • Move Up/Down
        • Rename
        • Restore
    • Miscellaneous
      • Namespaces
      • Reserved Names
      • XInclude Processor
    • 1.2 API (Javadoc)

Current Event

Built with Apache Lenya

Access Controller Resolvers

Table of Contents
  • Introduction
  • Defining the Roles in lenya.roles
  • Declaring the Access Controller Resolvers in cocoon.xconf
  • Publication Access Controller Resolver
  • Configurable Access Controller Resolver
  • Composable Access Controller Resolver

Introduction

In Lenya, the AccessController is chosen dynamically, depending on the requested URL. An AccessControllerResolver resolves the appropriate AccessController for a URL.

Defining the Roles in lenya.roles

To obtain an AccessControllerResolver, the AccessControllerResolverSelector is used. A component which wants to obtain an AccessController asks the selector for the ComposableAccessControllerResolver. The ComposableAccessControllerResolver itself uses the selector to obtain its child AccessControllerResolvers.

<role name="org.apache.lenya.ac.AccessControllerResolverSelector"
    shorthand="access-controller-resolvers"
    default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector">
  <hint shorthand="configurable"
      class="org.apache.lenya.ac.impl.ConfigurableAccessControllerResolver"/>
  <hint shorthand="publication"
      class="org.apache.lenya.cms.ac.PublicationAccessControllerResolver"/>
  <hint shorthand="composable"
      class="org.apache.lenya.ac.impl.ComposableAccessControllerResolver"/>
</role>

Declaring the Access Controller Resolvers in cocoon.xconf

<access-controller-resolvers>
  <component-instance logger="lenya.ac.accesscontrollerresolver.publication"
    class="org.apache.lenya.cms.ac.PublicationAccessControllerResolver"
    name="publication">
  </component-instance>
  <component-instance logger="lenya.ac.accesscontrollerresolver.global"
    class="org.apache.lenya.ac.impl.ConfigurableAccessControllerResolver"
    name="global">
    <access-controller type="global"/>
  </component-instance>
  <component-instance logger="lenya.ac.accesscontrollerresolver.composable"
    class="org.apache.lenya.ac.impl.ComposableAccessControllerResolver"
    name="composable">
    <resolver type="publication"/>
    <resolver type="global"/>
  </component-instance>
</access-controller-resolvers>

Publication Access Controller Resolver

The PublicationAccessControllerResolver looks for a config/ac.xconf file inside the publication. If you want to use multiple AccessControllers within your Lenya installation, just declare them in the cocoon-xconf.xsl file and choose the type in the config/ac.xconf file. The type attribute selects an AccessController from the definitions in cocoon.xconf.

You have to configure the complete AccessController in this file. For instance, if you want to use a BypassableAccessController together with a certain set of components, you declare it as follows:

<?xml version="1.0"?>
<access-controller type="bypassable">
  
  <accreditable-manager type="file">
    <parameter name="directory"
        value="context:///lenya/pubs/mypub/config/ac/passwd"/>
  </accreditable-manager>
  
  <policy-manager type="document">
    <policy-manager type="file">
      <parameter name="directory"
          value="context:///lenya/pubs/mypub/config/ac/policies"/>
    </policy-manager>
  </policy-manager>
  
  <authorizer type="policy"/>
  
  <authorizer type="usecase">
    <parameter name="configuration"
        value="context:///lenya/pubs/default/config/ac/usecase-policies.xml"/>
  </authorizer>
  
  <authorizer type="workflow"/>
  
</access-controller>

Configurable Access Controller Resolver

The ConfigurableAccessControllerResolver can be configured with an AccessController directly inside cocoon.xconf:

<component-instance logger="lenya.ac.accesscontrollerresolver"
    class="org.apache.lenya.ac.impl.ConfigurableAccessControllerResolver"
    name="global">
  <access-controller type="global"/>
</component-instance> 

Composable Access Controller Resolver

The ComposableAccessControllerResolver is configured with a list of AccessControllerResolvers. Each one of these resolvers is invoked until one is successful. If no resolver finds an AccessController, the ComposableAccessControllerResolver returns null.

<component-instance logger="lenya.ac.accesscontrollerresolver"
    class="org.apache.lenya.ac.impl.ComposableAccessControllerResolver"
    name="composable">
  <resolver type="publication"/>
  <resolver type="global"/>
</component-instance>

Copyright © 1999-2011 The Apache Software Foundation. All rights reserved.

Apache Lenya, Apache, and the Apache feather logo are trademarks of The Apache Software Foundation.