Author: angela
Date: Thu Feb 4 17:41:13 2016
New Revision: 1728523
URL: http://svn.apache.org/viewvc?rev=1728523&view=rev
Log:
OAK-1268 : Add support for composite authorization setup (cleanup, javadoc)
Removed:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/CompositePermissionProviderTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java?rev=1728523&r1=1728522&r2=1728523&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
Thu Feb 4 17:41:13 2016
@@ -29,22 +29,54 @@ import org.apache.jackrabbit.oak.api.Roo
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.spi.security.CompositeConfiguration;
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
-import
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
import
org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
import
org.apache.jackrabbit.oak.spi.security.authorization.permission.AggregatedPermissionProvider;
import
org.apache.jackrabbit.oak.spi.security.authorization.permission.EmptyPermissionProvider;
import
org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider;
import
org.apache.jackrabbit.oak.spi.security.authorization.restriction.CompositeRestrictionProvider;
import
org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* {@link CompositeAuthorizationConfiguration} that combines different
* authorization models. This implementation has the following characteristics:
*
- * TODO This is work in progress (OAK-1268)
+ * <h2>AccessControlManager</h2>
+ * <ul>
+ * <li>This method will return an aggregation of {@code
AccessControlManager}s in case
+ * multiple {@code AuthorizationConfiguration}s are present (see {@code
CompositeAccessControlManager}).</li>
+ * <li>If the composite only contains a single entry the {@code
AccessControlManager}
+ * of this implementation is return without extra wrapping.</li>
+ * <li>If the list of configurations is empty an {@code
IllegalStateException} is thrown.</li>
+ * </ul>
+ *
+ * <h2>PermissionProvider</h2>
+ * <ul>
+ * <li>This method will return an aggregation of {@code
PermissionProvider}s in case
+ * multiple {@code AuthorizationConfiguration}s exposing an {@link
AggregatedPermissionProvider}
+ * are present (see {@link CompositePermissionProvider}. Note however, that
+ * providers not implementing the {@code AggregatedPermissionProvider}
extension
+ * will be ignored.</li>
+ * <li>If the composite only contains a single entry the {@code
PermissionProvider}
+ * of this implementation is return without extra wrapping.</li>
+ * <li>If the list of configurations is empty an {@code
IllegalStateException} is thrown.</li>
+ * </ul>
+ *
+ * <h2>RestrictionProvider</h2>
+ * <ul>
+ * <li>This method will return an aggregation of {@code
RestrictionProvider}s in case
+ * multiple {@code AuthorizationConfiguration}s are present (see {@code
CompositeRestrictionProvider}).</li>
+ * <li>If the composite only contains a single entry the {@code
RestrictionProvider}
+ * of this implementation is return without extra wrapping.</li>
+ * <li>If the list of configurations is empty {@link
RestrictionProvider#EMPTY } is returned.</li>
+ * </ul>
+ *
*/
public class CompositeAuthorizationConfiguration extends
CompositeConfiguration<AuthorizationConfiguration> implements
AuthorizationConfiguration {
+ private static final Logger log =
LoggerFactory.getLogger(CompositeAuthorizationConfiguration.class);
+
public CompositeAuthorizationConfiguration() {
super(AuthorizationConfiguration.NAME);
}
@@ -106,6 +138,8 @@ public class CompositeAuthorizationConfi
PermissionProvider pProvider =
conf.getPermissionProvider(root, workspaceName, principals);
if (pProvider instanceof AggregatedPermissionProvider) {
aggrPermissionProviders.add((AggregatedPermissionProvider) pProvider);
+ } else {
+ log.warn("Ignoring permission provider of '{}':
missing implementation of AggregatedPermissionProvider",
conf.getClass().getName());
}
}
PermissionProvider pp;
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java?rev=1728523&r1=1728522&r2=1728523&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
Thu Feb 4 17:41:13 2016
@@ -40,11 +40,10 @@ import org.apache.jackrabbit.oak.spi.sec
/**
* Permission provider implementation that aggregates a list of different
- * provider implementations. Note, that the implementations *must* implement
- * the {@link
org.apache.jackrabbit.oak.spi.security.authorization.permission.AggregatedPermissionProvider}
+ * provider implementations. Note, that the aggregated provider implementations
+ * *must* implement the
+ * {@link
org.apache.jackrabbit.oak.spi.security.authorization.permission.AggregatedPermissionProvider}
* interface.
- *
- * TODO This is work in progress (OAK-1268)
*/
class CompositePermissionProvider implements PermissionProvider {