[ 
https://issues.apache.org/jira/browse/JCR-1171?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

angela updated JCR-1171:
------------------------

    Attachment: JCR-1171_comments_angela.txt

unordered and incomplete list of notes and comments based on my recent work on 
JSR 283 security features.

> Contribute Pluggable Permission and User Management to Jackrabbit
> -----------------------------------------------------------------
>
>                 Key: JCR-1171
>                 URL: https://issues.apache.org/jira/browse/JCR-1171
>             Project: Jackrabbit
>          Issue Type: New Feature
>          Components: security
>    Affects Versions: 1.4
>            Reporter: christian
>            Assignee: angela
>            Priority: Minor
>         Attachments: jackrabbit-core-changes.20071010.patch, 
> jackrabbit-core-implementation.20071010.patch, 
> jackrabbit-security-api.20071010.patch, JCR-1171_comments_angela.txt
>
>
> Working with a Jackrabbit based appliction I had to extend its security 
> handling.
> The aim of this extension has been to allow for a eitable resource based 
> authorization.
> The solution ended up in beeing plugable and extendable.
> As there have been some questions in the Jackrabbit Developper-list about 
> custom implementation of security or the management of privileges in 
> Jackrabbit, I like to suggest my implementation as contribution with attached 
> patches. 
> Below you can find some high-level explanation of the contained files and 
> concepts
> I hope the prove to be usable and enhance this great repository.
> I welcome your feed-back and like to thank for your kind inspection
> Regards
> Christian Keller
> The patch contains the following:
> =========================
> 1) API [jackrabbit-core-changes.20071010.patch]
> -------------------------------------------------------------------
> API which allows to implement and configure a mechanisms for Authentication 
> and Authorization. 
> The API is ACL- and Principal-based.
> ACL and Principals Management is independent of the JCR api, to allow 
> implementations to use different back-end systems like a Directory Server.
> 2) Changes to current core [jackrabbit-core-changes.20071010.patch]
> -----------------------------------------------------------------------------------------------
> Some small changes have been necessary to core to enable configuration and 
> access of Management, like session access to UserManager.
> 3) Implementation [jackrabbit-core-implementation.20071010.patch]
> -----------------------------------------------------------------------------------------------
> Additionally an implemenation is contained. It is not dependent on any 
> back-end system, and may therefore be used as a default.
> Description:
> ==========
> The extensions hook into Jackrabbit bei implementations of the Intefaces: 
> AccessManager and LoginModule. 
> Additionally there are changes for configuration, set-up and access of the 
> used Object.
> The patch extends the API, in order to allow client inspections of Users and 
> Permission. These are contained in the api.patch
> See a short Introduction below:
> =========================
> The Security extensions of this Patch contain both, Authentication and 
> Authorization extensions for which the follwoing two modells are introduced:
> I) The Authorizable
> ----------------------------
> These are User's and Groups of Users. Users can authenticate. 
> Authentication in Jackrabbit is done by LoginModules which issue Principals 
> as result of an Authentication.
> The Users are the objects which can be represented by such an Principal
> They are therfore are the base for the Authorization.
> II) The ACL
> ----------------
> The ACL is the Policy for Authorziation. 
> The ACL grants or denies a Principal Privileges which are called Actions.
> Additional ther is a Management for Principals:
> The Principal is the link between User and permission.
> A User may related to multiple Principals. As this dependes on the 
> LoginModules verfiying the Idendity of the login-attemp.
> The LoginModules may expose their Principals to the Repository via a Provider 
> interface, to allow for usage in ACEs.
> All Modells and their Managing Classes API's are abstracted from the fact, 
> that they are used in a JC-Repository. Aka there is no reference to 
> javax.jcr.Items, Sessions etc.
> This should allow to implement both for external sources for both without 
> imposing any JCR specific methods. Taken an LDAP as UserBase for example.
> The managing classes are UserManger, PrincpalManager and ACLManager. 
> They are set-up and maintained by a repsoitory singular SecurityManger. 
> Session specific versions of this Managers are exposed via Session.
> PrincipalManger and ACLManger are feed by one to multiple Providers. 
> PrincipalProviders may exist per LoginModule, ACLProvider per Workspace.
> Authentication:
> --------------------
> The User will be used by the LoginModule. It will be resolved based on the 
> given Credentials. If the Credentials can be validated, the User will be used 
> to resolve Principals according its Group-Membership. As a result the 
> Session's Subject will be extended by this principals.
> Authorization:
> -------------------
> The ACL will be use be an Implementation of the AccessManager-Interface
> An ACLManger relates Items to ACLs and the ACL evaluates the Permission for 
> the current Subject's Principals.
> Default Implementation
> ===================
> The Default Implementation uses the Repository itself to store its security 
> data.
> The Users are stored within a dedicated workspace. 
> The ACL are attached to the Nodes they relate to.
> The ACLs are inherited along the Item-Hierarchy.
> The Principals are taken from the Authorables.
> Configuration
> ===========
> The LoginModules may declare their PrincipalProvider class via a property key 
> with the name "principal_provider.class"
> The Workspace specific ACL Providers may be added via a configuration element 
> in Worskspace.xml, called WorkspaceSecurity.
> A Factory class can be configured there.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to