[jira] [Comment Edited] (OAK-793) Authentication: Document changes wrt. Jackrabbit

2013-07-30 Thread angela (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13710893#comment-13710893
 ] 

angela edited comment on OAK-793 at 7/30/13 7:49 AM:
-

h4. 1. Characteristics of the Default Implementation

h5. Null Login

As of Oak 1.0 Repository#login() and Repository#login(null, wspName) is no 
longer
treated as guest login. This behavior of Jackrabbit-core is violating
the specification, which defines that null-login should be used for those cases
where the authentication process is handled outside of the repository (- see 
pre-authentication below).

In order to get a full backwards compatible behavior OAK provides a specific
GuestLoginModule [0] that can be added to the JAAS (or corresponding OSGI) 
configuration.

Example JAAS Configuration:
{code}
jackrabbit.oak {
   org.apache.jackrabbit.oak.spi.security.authentication.GuestLoginModule  
optional;
   org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl 
required;
};
{code}


h5. Guest Login

With respect to guest login (aka anonymous login) the OAK content repository
out of the box contains the following modifications:

- null login != guest login
- no anonymous login with uid/pw

As explained in 1) the null login will not longer fall back to a guest login
unless explicitly configured (- GuestLoginModule).
The proper way to obtain an guest session as of OAK is as specified by JSR 283:

{code}
String wspName = null;
Session anonymous = repository.login(new GuestCredentials(), wspName);
{code}

Similarly, the special treatment that jackrabbit core applied for
the guest (anonymous) user has been omitted altogether in OAK. In the 
default setup the anonymous user will created without any password. Therefore
explicitly uid/pw login using the anonymous userId will no longer work.
This behavior is now consistent with the default login of any other user
which doesn't have a password set.


h5. Pre-Authentication in the LoginContextProvider

Like in Jackrabbit-core the repository internal authentication verification can
be skipped by calling Repository#login() or Repository#login(null, wspName).
In this case the repository implementation expects the verification to be
performed prior to the login call.

This behavior is provided by the default implementation of the 
LoginContextProvider [1]
which expects a Subject to be available with the current 
java.security.AccessControlContext.
However, in contrast to Jackrabbit-core the current implementation does not
try to extend the pre-authenticated subject but skips the internal verification
step altogether.

Since the LoginContextProvider is a configurable with the authentication setup
OAK users also have the following options by providing a custom 
LoginContextProvider:

- Disable pre-authentication by not trying to retrieve a pre-authenticated 
Subject.
- Add support for extending the pre-authenticated Subject by always passing the 
Subject to the JaasLoginContext
- Dropping JAAS altogether by providing a custom implementation of the
  org.apache.jackrabbit.oak.spi.security.authentication.LoginContext [2] 
interface.

Example how to use the pre-auth:

{code}
   String userId = test;
   /**
Retrive valid principals e.g. by calling jackrabbit API 
- PrincipalManager#getPrincipal and/or #getGroupMembership 
or from Oak SPI
- PrincipalProvider#getPrincipals(String userId)
*/
   Set? extends Principal principals = getPrincipals(userId);
   AuthInfo authInfo = new AuthInfoImpl(userId, Collections.String, 
ObjectemptyMap(), principals);
   Subject subject = new Subject(true, principals, 
Collections.singleton(authInfo), Collections.ObjectemptySet());
   Session session;
   try {
   session = Subject.doAsPrivileged(subject, new 
PrivilegedExceptionActionSession() {
   @Override
   public Session run() throws Exception {
   return login(null, null);
   }
   }, null);
   } catch (PrivilegedActionException e) {
   throw new RepositoryException(failed to retrieve session., e);
   }
{code}

h4. 2. Impersonation

h5. Self-Impersonation (aka Cloning a Session)

As of OAK 1.0 the latest changes made to JSR 333 with respect to 
Session#impersonate
have been adopted [3]: Any attempt to impersonate the same session 
(self-impersonation) 
will succeed as long as the user is still valid.

h5. Impersonation Credentials

The OAK implementation of Session#impersonate no longer uses SimpleCredentials 
to
transport the original Subject but rather performs the login with dedicated
ImpersonationCredentials [4].

With this change the impersonation feature no longer relies on SimpleCredentials
being passed to Session#impersonate call. Instead the specified credentials are
passed to a new instance of ImpersonationCredentials delegating the evaluation 
and
validation of the specified Credentials to the 

[jira] [Commented] (OAK-803) Backwards compatibility of long-lived sessions

2013-07-30 Thread JIRA

[ 
https://issues.apache.org/jira/browse/OAK-803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13723585#comment-13723585
 ] 

Michael Dürig commented on OAK-803:
---

I created JCR-3634 to track adding a login method to {{JackrabbitRepository}} 
that has a separate {{attributes}} parameter.

 Backwards compatibility of long-lived sessions
 --

 Key: OAK-803
 URL: https://issues.apache.org/jira/browse/OAK-803
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: jcr
Reporter: Jukka Zitting
Assignee: Michael Dürig

 The auto-refresh mode added in OAK-88 should perhaps be enabled by default, 
 with warning logs to let clients know that relying on such a default behavior 
 without explicit per-session configuration might not be supported in a future 
 release.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Comment Edited] (OAK-910) Privilege Management: Document changes wrt Jackrabbit

2013-07-30 Thread angela (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13720871#comment-13720871
 ] 

angela edited comment on OAK-910 at 7/30/13 9:08 AM:
-

h4. 1. General Characteristics of the Privilege Management Implementation

As of OAK the built-in and custom privileges are stored in the repository 
underneath /jcr:system/rep:privileges. Similar to other repository level date 
(node types, namespaces and versions) this location is shared by all workspaces 
present in the repository. The nodes and properties storing the privilege 
definitions are protected by their node type definition.  In addition a 
specific privilege {{Validator}} and {{CommitHook}} implementations assert the 
consistency of the privilege store. The built-in privileges are installed using 
a dedicated implementation of the {{RepositoryInitializer}} [0].

h4. 2. Built-in Privilege Definitions

* All Privileges as defined by JSR 283
** jcr:read
** jcr:modifyProperties
** jcr:addChildNodes
** jcr:removeNode
** jcr:removeChildNodes
** jcr:readAccessControl
** jcr:modifyAccessControl
** jcr:lockManagement
** jcr:versionManagement
** jcr:nodeTypeManagement
** jcr:retentionManagement (NOTE: retention management not yet implemented)
** jcr:lifecycleManagement (NOTE: lifecycle management not yet implemented)
** jcr:write
** jcr:all
* All Privileges defined by JSR 333
** jcr:workspaceManagement (NOTE: wsp management not yet implemented)
** jcr:nodeTypeDefinitionManagement
** jcr:namespaceManagement
* All Privileges defined by Jackrabbit 2.x
** rep:write
** rep:privilegeManagement
* new privileges defined by OAK 1.0:
** rep:userManagement
** rep:readNodes
** rep:readProperties
** rep:addProperties
** rep:alterProperties
** rep:removeProperties

Note the following differences with respect to Jackrabbit 2.x definitions:
* jcr:read is now an aggregation of rep:readNodes and rep:readProperties
* jcr:modifyProperties is now an aggregation of rep:addProperties, 
rep:alterProperties and rep:removeProperties

h4. 3. Node Type Definitions

The following privilege related built-in node types have been added in OAK 1.0. 
They are used to represent built-in and custom privilege definitions in the 
repository.

{code}
[rep:Privileges]
  + * (rep:Privilege) = rep:Privilege protected ABORT
  - rep:next (LONG) protected multiple mandatory

[rep:Privilege]
  - rep:isAbstract (BOOLEAN) protected
  - rep:aggregates (NAME) protected multiple
  - rep:bits (LONG) protected multiple mandatory
{code}

h4. 4. API Extensions

-

h4. 5. Configuration

* PrivilegeConfiguration [1]:
** getPrivilegeManager - returns a new instance of the PrivilegeManager 
interface such as exposed by JackrabbitWorkspace#getPrivilegeManager. Note that 
the default implementation is based on OAK API and can equally be used for 
privilege related tasks in the OAK layer.

h4. 6. References

[0] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeInitializer.java
[1] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeConfiguration.java

  was (Author: anchela):
h4. 1. General Characteristics of the Privilege Management Implementation

As of OAK the built-in and custom privileges are stored in the repository 
underneath /jcr:system/rep:privileges. Similar to other repository level date 
(node types, namespaces and versions) this location is shared by all workspaces 
present in the repository. The nodes and properties storing the privilege 
definitions are protected by their node type definition.  In addition a 
specific privilege validator asserts the consistency of the privilege store.

h4. 2. Built-in Privilege Definitions

* All Privileges as defined by JSR 283
** jcr:read
** jcr:modifyProperties
** jcr:addChildNodes
** jcr:removeNode
** jcr:removeChildNodes
** jcr:readAccessControl
** jcr:modifyAccessControl
** jcr:lockManagement
** jcr:versionManagement
** jcr:nodeTypeManagement
** jcr:retentionManagement (NOTE: retention management not yet implemented)
** jcr:lifecycleManagement (NOTE: lifecycle management not yet implemented)
** jcr:write
** jcr:all
* All Privileges defined by JSR 333
** jcr:workspaceManagement (NOTE: wsp management not yet implemented)
** jcr:nodeTypeDefinitionManagement
** jcr:namespaceManagement
* All Privileges defined by Jackrabbit 2.x
** rep:write
** rep:privilegeManagement
* new privileges defined by OAK 1.0:
** rep:userManagement
** rep:readNodes
** rep:readProperties
** rep:addProperties
** rep:alterProperties
** rep:removeProperties

Note the following differences with respect to Jackrabbit 2.x definitions:
* jcr:read is now an aggregation of rep:readNodes and rep:readProperties
* jcr:modifyProperties is now an aggregation of rep:addProperties, 

[jira] [Comment Edited] (OAK-910) Privilege Management: Document changes wrt Jackrabbit

2013-07-30 Thread angela (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13720871#comment-13720871
 ] 

angela edited comment on OAK-910 at 7/30/13 9:19 AM:
-

h4. 1. Characteristics of the Privilege Management Implementation

h5. General Notes
As of OAK the built-in and custom privileges are stored in the repository 
underneath {{/jcr:system/rep:privileges}}. Similar to other repository level 
date (node types, namespaces and versions) this location is shared by all 
workspaces present in the repository. The nodes and properties storing the 
privilege definitions are protected by their node type definition.  In addition 
a specific privilege {{Validator}} and {{CommitHook}} implementations assert 
the consistency of the privilege store. The built-in privileges are installed 
using a dedicated implementation of the {{RepositoryInitializer}} [0].

h5. Registration of Custom Privileges
As far as registration of custom privileges the OAK implementation behaves 
different to Jackrabbit 2.x in the following aspects:
* Registration of new privileges fails with {{IllegalStateException}} if the 
editing session has pending changes.
* Any validation is performed by CommitHooks in order to make sure that 
modifications made on the OAK API directly is equally verified. Subsequently 
any violation (permission, privilege consistency) is only detected at the end 
of the registration process. The privilege manager itself does not perform any 
validation.

h4. 2. Built-in Privilege Definitions

* All Privileges as defined by JSR 283
** jcr:read
** jcr:modifyProperties
** jcr:addChildNodes
** jcr:removeNode
** jcr:removeChildNodes
** jcr:readAccessControl
** jcr:modifyAccessControl
** jcr:lockManagement
** jcr:versionManagement
** jcr:nodeTypeManagement
** jcr:retentionManagement (NOTE: retention management not yet implemented)
** jcr:lifecycleManagement (NOTE: lifecycle management not yet implemented)
** jcr:write
** jcr:all
* All Privileges defined by JSR 333
** jcr:workspaceManagement (NOTE: wsp management not yet implemented)
** jcr:nodeTypeDefinitionManagement
** jcr:namespaceManagement
* All Privileges defined by Jackrabbit 2.x
** rep:write
** rep:privilegeManagement
* new privileges defined by OAK 1.0:
** rep:userManagement
** rep:readNodes
** rep:readProperties
** rep:addProperties
** rep:alterProperties
** rep:removeProperties

Note the following differences with respect to Jackrabbit 2.x definitions:
* jcr:read is now an aggregation of rep:readNodes and rep:readProperties
* jcr:modifyProperties is now an aggregation of rep:addProperties, 
rep:alterProperties and rep:removeProperties

h4. 3. Node Type Definitions

The following privilege related built-in node types have been added in OAK 1.0. 
They are used to represent built-in and custom privilege definitions in the 
repository.

{code}
[rep:Privileges]
  + * (rep:Privilege) = rep:Privilege protected ABORT
  - rep:next (LONG) protected multiple mandatory

[rep:Privilege]
  - rep:isAbstract (BOOLEAN) protected
  - rep:aggregates (NAME) protected multiple
  - rep:bits (LONG) protected multiple mandatory
{code}

h4. 4. API Extensions

-

h4. 5. Configuration

* PrivilegeConfiguration [1]:
** getPrivilegeManager - returns a new instance of the PrivilegeManager 
interface such as exposed by JackrabbitWorkspace#getPrivilegeManager. Note that 
the default implementation is based on OAK API and can equally be used for 
privilege related tasks in the OAK layer.

h4. 6. References

[0] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeInitializer.java
[1] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeConfiguration.java

  was (Author: anchela):
h4. 1. General Characteristics of the Privilege Management Implementation

As of OAK the built-in and custom privileges are stored in the repository 
underneath /jcr:system/rep:privileges. Similar to other repository level date 
(node types, namespaces and versions) this location is shared by all workspaces 
present in the repository. The nodes and properties storing the privilege 
definitions are protected by their node type definition.  In addition a 
specific privilege {{Validator}} and {{CommitHook}} implementations assert the 
consistency of the privilege store. The built-in privileges are installed using 
a dedicated implementation of the {{RepositoryInitializer}} [0].

h4. 2. Built-in Privilege Definitions

* All Privileges as defined by JSR 283
** jcr:read
** jcr:modifyProperties
** jcr:addChildNodes
** jcr:removeNode
** jcr:removeChildNodes
** jcr:readAccessControl
** jcr:modifyAccessControl
** jcr:lockManagement
** jcr:versionManagement
** jcr:nodeTypeManagement
** jcr:retentionManagement (NOTE: retention 

[jira] [Comment Edited] (OAK-910) Privilege Management: Document changes wrt Jackrabbit

2013-07-30 Thread angela (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13720871#comment-13720871
 ] 

angela edited comment on OAK-910 at 7/30/13 9:20 AM:
-

h4. 1. Characteristics of the Privilege Management Implementation

h5. General Notes
As of OAK the built-in and custom privileges are stored in the repository 
underneath {{/jcr:system/rep:privileges}}. Similar to other repository level 
date (node types, namespaces and versions) this location is shared by all 
workspaces present in the repository. The nodes and properties storing the 
privilege definitions are protected by their node type definition.  In addition 
a specific privilege {{Validator}} and {{CommitHook}} implementations assert 
the consistency of the privilege store. The built-in privileges are installed 
using a dedicated implementation of the {{RepositoryInitializer}} [0].

h5. Registration of Custom Privileges
As far as registration of custom privileges the OAK implementation behaves 
different to Jackrabbit 2.x in the following aspects:
* Registration of new privileges fails with {{IllegalStateException}} if the 
editing session has pending changes.
* Any validation is performed by CommitHooks in order to make sure that 
modifications made on the OAK API directly is equally verified. Subsequently 
any violation (permission, privilege consistency) is only detected at the end 
of the registration process. The privilege manager itself does not perform any 
validation.

h4. 2. Built-in Privilege Definitions

* All Privileges as defined by JSR 283
** jcr:read
** jcr:modifyProperties
** jcr:addChildNodes
** jcr:removeNode
** jcr:removeChildNodes
** jcr:readAccessControl
** jcr:modifyAccessControl
** jcr:lockManagement
** jcr:versionManagement
** jcr:nodeTypeManagement
** jcr:retentionManagement (NOTE: retention management not yet implemented)
** jcr:lifecycleManagement (NOTE: lifecycle management not yet implemented)
** jcr:write
** jcr:all
* All Privileges defined by JSR 333
** jcr:workspaceManagement (NOTE: wsp management not yet implemented)
** jcr:nodeTypeDefinitionManagement
** jcr:namespaceManagement
* All Privileges defined by Jackrabbit 2.x
** rep:write
** rep:privilegeManagement
* new privileges defined by OAK 1.0:
** rep:userManagement
** rep:readNodes
** rep:readProperties
** rep:addProperties
** rep:alterProperties
** rep:removeProperties

Note the following differences with respect to Jackrabbit 2.x definitions:
* jcr:read is now an aggregation of rep:readNodes and rep:readProperties
* jcr:modifyProperties is now an aggregation of rep:addProperties, 
rep:alterProperties and rep:removeProperties

h4. 3. Node Type Definitions

The following privilege related built-in node types have been added in OAK 1.0. 
They are used to represent built-in and custom privilege definitions in the 
repository.

{code}
[rep:Privileges]
  + * (rep:Privilege) = rep:Privilege protected ABORT
  - rep:next (LONG) protected multiple mandatory

[rep:Privilege]
  - rep:isAbstract (BOOLEAN) protected
  - rep:aggregates (NAME) protected multiple
  - rep:bits (LONG) protected multiple mandatory
{code}

h4. 4. API Extensions

-

h4. 5. Configuration

* {{PrivilegeConfiguration}} [1]:
** {{getPrivilegeManager}} - returns a new instance of the 
{{PrivilegeManager}} interface such as exposed by 
{{JackrabbitWorkspace#getPrivilegeManager}}. Note that the default 
implementation is based on OAK API and can equally be used for privilege 
related tasks in the OAK layer.

h4. 6. References

[0] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeInitializer.java
[1] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeConfiguration.java

  was (Author: anchela):
h4. 1. Characteristics of the Privilege Management Implementation

h5. General Notes
As of OAK the built-in and custom privileges are stored in the repository 
underneath {{/jcr:system/rep:privileges}}. Similar to other repository level 
date (node types, namespaces and versions) this location is shared by all 
workspaces present in the repository. The nodes and properties storing the 
privilege definitions are protected by their node type definition.  In addition 
a specific privilege {{Validator}} and {{CommitHook}} implementations assert 
the consistency of the privilege store. The built-in privileges are installed 
using a dedicated implementation of the {{RepositoryInitializer}} [0].

h5. Registration of Custom Privileges
As far as registration of custom privileges the OAK implementation behaves 
different to Jackrabbit 2.x in the following aspects:
* Registration of new privileges fails with {{IllegalStateException}} if the 
editing session has pending changes.
* Any validation is performed by 

[jira] [Comment Edited] (OAK-793) Authentication: Document changes wrt. Jackrabbit

2013-07-30 Thread angela (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13710893#comment-13710893
 ] 

angela edited comment on OAK-793 at 7/30/13 9:29 AM:
-

h4. 1. Characteristics of the Default Implementation

h5. Null Login

As of Oak 1.0 {{Repository#login()}} and {{Repository#login(null, wspName)}} is 
no longer treated as guest login. This behavior of Jackrabbit-core is violating 
the specification, which defines that null-login should be used for those cases 
where the authentication process is handled outside of the repository (- see 
pre-authentication below).

In order to get a full backwards compatible behavior OAK provides a specific 
{{GuestLoginModule}} [0] that can be added to the JAAS (or corresponding OSGI) 
configuration.

Example JAAS Configuration:
{code}
jackrabbit.oak {
   org.apache.jackrabbit.oak.spi.security.authentication.GuestLoginModule  
optional;
   org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl 
required;
};
{code}


h5. Guest Login

With respect to guest login (aka anonymous login) the OAK content repository
out of the box contains the following modifications:

- null login != guest login
- no anonymous login with uid/pw

As explained in 1) the null login will not longer fall back to a guest login
unless explicitly configured (- {{GuestLoginModule}}).
The proper way to obtain an guest session as of OAK is as specified by JSR 283:

{code}
String wspName = null;
Session anonymous = repository.login(new GuestCredentials(), wspName);
{code}

Similarly, the special treatment that jackrabbit core applied for
the guest (anonymous) user has been omitted altogether in OAK. In the 
default setup the anonymous user will created without any password. Therefore
explicitly uid/pw login using the anonymous userId will no longer work.
This behavior is now consistent with the default login of any other user
which doesn't have a password set.


h5. Pre-Authentication in the LoginContextProvider

Like in Jackrabbit-core the repository internal authentication verification can 
be skipped by calling {{Repository#login()}} or {{Repository#login(null, 
wspName)}}. In this case the repository implementation expects the verification 
to be performed prior to the login call.

This behavior is provided by the default implementation of the 
{{LoginContextProvider}} [1] which expects a {{Subject}} to be available with 
the current {{java.security.AccessControlContext}}. However, in contrast to 
Jackrabbit-core the current implementation does not try to extend the 
pre-authenticated subject but skips the internal verification step altogether.

Since the {{LoginContextProvider}} is a configurable with the authentication 
setup OAK users also have the following options by providing a custom 
{{LoginContextProvider}}:

- Disable pre-authentication by not trying to retrieve a pre-authenticated 
{{Subject}}.
- Add support for extending the pre-authenticated subject by always passing 
writable subjects to the {{JaasLoginContext}}
- Dropping JAAS altogether by providing a custom implementation of the
  {{org.apache.jackrabbit.oak.spi.security.authentication.LoginContext}} [2] 
interface.

Example how to use the pre-auth:

{code}
   String userId = test;
   /**
Retrive valid principals e.g. by calling jackrabbit API 
- PrincipalManager#getPrincipal and/or #getGroupMembership 
or from Oak SPI
- PrincipalProvider#getPrincipals(String userId)
*/
   Set? extends Principal principals = getPrincipals(userId);
   AuthInfo authInfo = new AuthInfoImpl(userId, Collections.String, 
ObjectemptyMap(), principals);
   Subject subject = new Subject(true, principals, 
Collections.singleton(authInfo), Collections.ObjectemptySet());
   Session session;
   try {
   session = Subject.doAsPrivileged(subject, new 
PrivilegedExceptionActionSession() {
   @Override
   public Session run() throws Exception {
   return login(null, null);
   }
   }, null);
   } catch (PrivilegedActionException e) {
   throw new RepositoryException(failed to retrieve session., e);
   }
{code}

h4. 2. Impersonation

h5. Self-Impersonation (aka Cloning a Session)

As of OAK 1.0 the latest changes made to JSR 333 with respect to 
{{Session#impersonate}} have been adopted [3]: Any attempt to impersonate the 
same session (self-impersonation) will succeed as long as the user is still 
valid.

h5. Impersonation Credentials

The OAK implementation of {{Session#impersonate}} no longer uses 
{{SimpleCredentials}} to transport the original {{Subject}} but rather performs 
the login with dedicated {{ImpersonationCredentials}} [4].

With this change the impersonation feature no longer relies on 
{{SimpleCredentials}} being passed to {{Session#impersonate}} call. Instead the 
specified credentials are passed to a new instance of 

[jira] [Resolved] (OAK-755) Remove privilege mgt configuration from SecurityProvider

2013-07-30 Thread angela (JIRA)

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

angela resolved OAK-755.


Resolution: Won't Fix

Revision 1508359: slightly adjusted the securityconfiguration such that the 
privilege related part doesn't require special handling.

- resolving wontfix.

 Remove privilege mgt configuration from SecurityProvider
 

 Key: OAK-755
 URL: https://issues.apache.org/jira/browse/OAK-755
 Project: Jackrabbit Oak
  Issue Type: Sub-task
  Components: core
Reporter: angela

 in contrast to the pluggable features listed in the container issue
 the privilege mgt should be considered built-in and global functionality
 of the repository similar to node types, namespaces and versioning.
 IMO it doesn't make sense to provide extra plugability for that part
 of the security setup.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (OAK-770) NodeImpl doesn't implement JackrabbitNode

2013-07-30 Thread angela (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13723650#comment-13723650
 ] 

angela commented on OAK-770:


Revision 1508367: added dummy implementation that throws 
UnsupportRepositoryOperationException including issue reference in the 
exception message.

 NodeImpl doesn't implement JackrabbitNode
 -

 Key: OAK-770
 URL: https://issues.apache.org/jira/browse/OAK-770
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: jcr
Reporter: angela
Priority: Minor

 for backwards compatibility it would be desirable if NodeImpl would
 implement the 2 methods defined on JackrabbitNode:
 - void rename(java.lang.String)   
 - void setMixins(java.lang.String[])

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (OAK-770) NodeImpl should implement JackrabbitNode

2013-07-30 Thread angela (JIRA)

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

angela updated OAK-770:
---

Summary: NodeImpl should implement JackrabbitNode  (was: NodeImpl doesn't 
implement JackrabbitNode)

 NodeImpl should implement JackrabbitNode
 

 Key: OAK-770
 URL: https://issues.apache.org/jira/browse/OAK-770
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: jcr
Reporter: angela
Priority: Minor

 for backwards compatibility it would be desirable if NodeImpl would
 implement the 2 methods defined on JackrabbitNode:
 - void rename(java.lang.String)   
 - void setMixins(java.lang.String[])

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Comment Edited] (OAK-910) Privilege Management: Document changes wrt Jackrabbit

2013-07-30 Thread angela (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13720871#comment-13720871
 ] 

angela edited comment on OAK-910 at 7/30/13 10:02 AM:
--

h4. 1. Characteristics of the Privilege Management Implementation

h5. General Notes
As of OAK the built-in and custom privileges are stored in the repository 
underneath {{/jcr:system/rep:privileges}}. Similar to other repository level 
date (node types, namespaces and versions) this location is shared by all 
workspaces present in the repository. The nodes and properties storing the 
privilege definitions are protected by their node type definition.  In addition 
a specific privilege {{Validator}} and {{CommitHook}} implementations assert 
the consistency of the privilege store. The built-in privileges are installed 
using a dedicated implementation of the {{RepositoryInitializer}} [0].

h5. Registration of Custom Privileges
As far as registration of custom privileges the OAK implementation behaves 
different to Jackrabbit 2.x in the following aspects:
* Registration of new privileges fails with {{IllegalStateException}} if the 
editing session has pending changes.
* Any validation is performed by CommitHooks in order to make sure that 
modifications made on the OAK API directly is equally verified. Subsequently 
any violation (permission, privilege consistency) is only detected at the end 
of the registration process. The privilege manager itself does not perform any 
validation.

h4. 2. Built-in Privilege Definitions

* All Privileges as defined by JSR 283
** jcr:read
** jcr:modifyProperties
** jcr:addChildNodes
** jcr:removeNode
** jcr:removeChildNodes
** jcr:readAccessControl
** jcr:modifyAccessControl
** jcr:lockManagement
** jcr:versionManagement
** jcr:nodeTypeManagement
** jcr:retentionManagement (NOTE: retention management not yet implemented)
** jcr:lifecycleManagement (NOTE: lifecycle management not yet implemented)
** jcr:write
** jcr:all
* All Privileges defined by JSR 333
** jcr:workspaceManagement (NOTE: wsp management not yet implemented)
** jcr:nodeTypeDefinitionManagement
** jcr:namespaceManagement
* All Privileges defined by Jackrabbit 2.x
** rep:write
** rep:privilegeManagement
* New Privileges defined by OAK 1.0:
** rep:userManagement
** rep:readNodes
** rep:readProperties
** rep:addProperties
** rep:alterProperties
** rep:removeProperties

Note the following differences with respect to Jackrabbit 2.x definitions:
* jcr:read is now an aggregation of rep:readNodes and rep:readProperties
* jcr:modifyProperties is now an aggregation of rep:addProperties, 
rep:alterProperties and rep:removeProperties

h4. 3. Node Type Definitions

The following privilege related built-in node types have been added in OAK 1.0. 
They are used to represent built-in and custom privilege definitions in the 
repository.

{code}
[rep:Privileges]
  + * (rep:Privilege) = rep:Privilege protected ABORT
  - rep:next (LONG) protected multiple mandatory

[rep:Privilege]
  - rep:isAbstract (BOOLEAN) protected
  - rep:aggregates (NAME) protected multiple
  - rep:bits (LONG) protected multiple mandatory
{code}

h4. 4. API Extensions

-

h4. 5. Configuration

* {{PrivilegeConfiguration}} [1]:
** {{getPrivilegeManager}} - returns a new instance of the 
{{PrivilegeManager}} interface such as exposed by 
{{JackrabbitWorkspace#getPrivilegeManager}}. Note that the default 
implementation is based on OAK API and can equally be used for privilege 
related tasks in the OAK layer.

h4. 6. References

[0] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeInitializer.java
[1] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeConfiguration.java

  was (Author: anchela):
h4. 1. Characteristics of the Privilege Management Implementation

h5. General Notes
As of OAK the built-in and custom privileges are stored in the repository 
underneath {{/jcr:system/rep:privileges}}. Similar to other repository level 
date (node types, namespaces and versions) this location is shared by all 
workspaces present in the repository. The nodes and properties storing the 
privilege definitions are protected by their node type definition.  In addition 
a specific privilege {{Validator}} and {{CommitHook}} implementations assert 
the consistency of the privilege store. The built-in privileges are installed 
using a dedicated implementation of the {{RepositoryInitializer}} [0].

h5. Registration of Custom Privileges
As far as registration of custom privileges the OAK implementation behaves 
different to Jackrabbit 2.x in the following aspects:
* Registration of new privileges fails with {{IllegalStateException}} if the 
editing session has pending changes.
* Any validation is performed by 

[jira] [Created] (OAK-934) NodeIterator.getSize() can return Long.MAX_VALUE for the MongoMK

2013-07-30 Thread Thomas Mueller (JIRA)
Thomas Mueller created OAK-934:
--

 Summary: NodeIterator.getSize() can return Long.MAX_VALUE for the 
MongoMK
 Key: OAK-934
 URL: https://issues.apache.org/jira/browse/OAK-934
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, jcr, mongomk
Reporter: Thomas Mueller
Assignee: Thomas Mueller


When using the MongoMK, the method NodeIterator.getSize() returns 
Long.MAX_VALUE if there are many child nodes (more than 
MongoMK.MANY_CHILDREN_THRESHOLD).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Created] (OAK-935) Implement JackrabbitRepository

2013-07-30 Thread JIRA
Michael Dürig created OAK-935:
-

 Summary: Implement JackrabbitRepository
 Key: OAK-935
 URL: https://issues.apache.org/jira/browse/OAK-935
 Project: Jackrabbit Oak
  Issue Type: New Feature
  Components: jcr
Reporter: Michael Dürig


To profit from the changes from JCR-3634 and for backward compatibility Oak 
should implement {{JackrabbitRepository}}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (OAK-935) Implement JackrabbitRepository

2013-07-30 Thread JIRA

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

Michael Dürig updated OAK-935:
--

Assignee: Michael Dürig

 Implement JackrabbitRepository
 --

 Key: OAK-935
 URL: https://issues.apache.org/jira/browse/OAK-935
 Project: Jackrabbit Oak
  Issue Type: New Feature
  Components: jcr
Reporter: Michael Dürig
Assignee: Michael Dürig

 To profit from the changes from JCR-3634 and for backward compatibility Oak 
 should implement {{JackrabbitRepository}}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Comment Edited] (OAK-792) AccessControl Management and Permissions: Document changes wrt. Jackrabbit

2013-07-30 Thread angela (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-792?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13718362#comment-13718362
 ] 

angela edited comment on OAK-792 at 7/30/13 3:41 PM:
-

h4. 1. Characteristics of the Default Implementation

h5. JCR API
h6. Session#hasPermission and #checkPermission
h6. AccessControlManager#hasPrivilege and #getPrivileges
h6. AccessControlManager#getEffectivePolicies

h5. Jackrabbit API
h6. Principal-based Access Control

h5. Mapping of JCR Actions to Permissions


h5. Permission Evaluation
h6. Reading
h6. Property Modification
h6. Node Removal
h6. Version Management
h6. User Management




h4. 2. API Extensions


h4. 3. Configuration


h4. 4 References


  was (Author: anchela):
1) Characteristics of the Default Implementation


2) API Extensions


3) Configuration


4) References

  
 AccessControl Management and Permissions: Document changes wrt. Jackrabbit
 --

 Key: OAK-792
 URL: https://issues.apache.org/jira/browse/OAK-792
 Project: Jackrabbit Oak
  Issue Type: Sub-task
  Components: jcr
Reporter: angela
Assignee: angela



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira