You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2013/06/06 11:43:41 UTC

svn commit: r1490214 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/security/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorizatio...

Author: angela
Date: Thu Jun  6 09:43:40 2013
New Revision: 1490214

URL: http://svn.apache.org/r1490214
Log:
OAK-754 : Pluggable Security Setup (WIP)

Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/SecurityConfiguration.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlConfiguration.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalConfiguration.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeConfiguration.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConfiguration.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/Jr2CompatibilityTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java Thu Jun  6 09:43:40 2013
@@ -49,7 +49,7 @@ public class SecurityProviderImpl implem
     @Nonnull
     @Override
     public ConfigurationParameters getParameters(String name) {
-        return (name == null) ? configuration : configuration.getConfigValue(name, new ConfigurationParameters());
+        return (name == null) ? configuration : configuration.getConfigValue(name, ConfigurationParameters.EMPTY);
     }
 
     @Nonnull

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java Thu Jun  6 09:43:40 2013
@@ -21,12 +21,12 @@ import javax.security.auth.login.Configu
 
 import org.apache.jackrabbit.oak.api.ContentRepository;
 import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.spi.security.authentication.ConfigurationUtil;
 import org.apache.jackrabbit.oak.security.authentication.token.TokenProviderImpl;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
-import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
+import org.apache.jackrabbit.oak.spi.security.authentication.ConfigurationUtil;
 import org.apache.jackrabbit.oak.spi.security.authentication.LoginContextProvider;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
@@ -49,18 +49,22 @@ import org.slf4j.LoggerFactory;
  * </ul>
  *
  */
-public class AuthenticationConfigurationImpl extends SecurityConfiguration.Default implements AuthenticationConfiguration {
+public class AuthenticationConfigurationImpl extends ConfigurationBase implements AuthenticationConfiguration {
 
     private static final Logger log = LoggerFactory.getLogger(AuthenticationConfigurationImpl.class);
 
-    private final SecurityProvider securityProvider;
-    private final ConfigurationParameters config;
-
     public AuthenticationConfigurationImpl(SecurityProvider securityProvider) {
-        this.securityProvider = securityProvider;
-        this.config = securityProvider.getParameters(PARAM_AUTHENTICATION_OPTIONS);
+        super(securityProvider);
+    }
+
+    //----------------------------------------------< SecurityConfiguration >---
+    @Nonnull
+    @Override
+    public String getName() {
+        return NAME;
     }
 
+    //----------------------------------------< AuthenticationConfiguration >---
     /**
      * Create a {@code LoginContextProvider} using standard
      * {@link javax.security.auth.login.Configuration#getConfiguration() JAAS}
@@ -88,7 +92,7 @@ public class AuthenticationConfiguration
     @Nonnull
     @Override
     public LoginContextProvider getLoginContextProvider(ContentRepository contentRepository) {
-        String appName = config.getConfigValue(PARAM_APP_NAME, DEFAULT_APP_NAME);
+        String appName = getParameters().getConfigValue(PARAM_APP_NAME, DEFAULT_APP_NAME);
         Configuration loginConfig = null;
         try {
             loginConfig = Configuration.getConfiguration();
@@ -101,9 +105,9 @@ public class AuthenticationConfiguration
         }
         if (loginConfig == null) {
             log.debug("No login configuration available for {}; using default", appName);
-            loginConfig = ConfigurationUtil.getDefaultConfiguration(config);
+            loginConfig = ConfigurationUtil.getDefaultConfiguration(getParameters());
         }
-        return new LoginContextProviderImpl(appName, loginConfig, contentRepository, securityProvider);
+        return new LoginContextProviderImpl(appName, loginConfig, contentRepository, getSecurityProvider());
     }
 
     /**
@@ -122,8 +126,8 @@ public class AuthenticationConfiguration
     @Nonnull
     @Override
     public TokenProvider getTokenProvider(Root root) {
-        ConfigurationParameters tokenOptions = config.getConfigValue(PARAM_TOKEN_OPTIONS, new ConfigurationParameters());
-        UserConfiguration uc = securityProvider.getConfiguration(UserConfiguration.class);
+        ConfigurationParameters tokenOptions = getParameters().getConfigValue(PARAM_TOKEN_OPTIONS, new ConfigurationParameters());
+        UserConfiguration uc = getSecurityProvider().getConfiguration(UserConfiguration.class);
         return new TokenProviderImpl(root, tokenOptions, uc);
     }
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlConfigurationImpl.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlConfigurationImpl.java Thu Jun  6 09:43:40 2013
@@ -35,9 +35,8 @@ import org.apache.jackrabbit.oak.securit
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.lifecycle.WorkspaceInitializer;
-import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
 import org.apache.jackrabbit.oak.spi.security.Context;
-import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
 import org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider;
@@ -47,27 +46,22 @@ import org.apache.jackrabbit.oak.spi.xml
 /**
  * Default implementation of the {@code AccessControlConfiguration}.
  */
-public class AccessControlConfigurationImpl extends SecurityConfiguration.Default implements AccessControlConfiguration {
-
-    private final SecurityProvider securityProvider;
-    private final ConfigurationParameters config;
+public class AccessControlConfigurationImpl extends ConfigurationBase implements AccessControlConfiguration {
 
     public AccessControlConfigurationImpl(SecurityProvider securityProvider) {
-        this.securityProvider = securityProvider;
-        config = securityProvider.getParameters(PARAM_ACCESS_CONTROL_OPTIONS);
+        super(securityProvider);
     }
 
     //----------------------------------------------< SecurityConfiguration >---
-
+    @Nonnull
     @Override
-    public Context getContext() {
-        return AccessControlContext.getInstance();
+    public String getName() {
+        return NAME;
     }
 
-    @Nonnull
     @Override
-    public ConfigurationParameters getParameters() {
-        return config;
+    public Context getContext() {
+        return AccessControlContext.getInstance();
     }
 
     @Nonnull
@@ -88,20 +82,20 @@ public class AccessControlConfigurationI
     public List<ValidatorProvider> getValidators(String workspaceName) {
         return ImmutableList.of(
                 new PermissionStoreValidatorProvider(),
-                new PermissionValidatorProvider(securityProvider),
-                new AccessControlValidatorProvider(securityProvider));
+                new PermissionValidatorProvider(getSecurityProvider()),
+                new AccessControlValidatorProvider(getSecurityProvider()));
     }
 
     @Nonnull
     @Override
     public List<ProtectedItemImporter> getProtectedItemImporters() {
-        return Collections.<ProtectedItemImporter>singletonList(new AccessControlImporter(securityProvider));
+        return Collections.<ProtectedItemImporter>singletonList(new AccessControlImporter(getSecurityProvider()));
     }
 
     //-----------------------------------------< AccessControlConfiguration >---
     @Override
     public AccessControlManager getAccessControlManager(Root root, NamePathMapper namePathMapper) {
-        return new AccessControlManagerImpl(root, namePathMapper, securityProvider);
+        return new AccessControlManagerImpl(root, namePathMapper, getSecurityProvider());
     }
 
     @Nonnull
@@ -113,6 +107,6 @@ public class AccessControlConfigurationI
     @Nonnull
     @Override
     public PermissionProvider getPermissionProvider(Root root, Set<Principal> principals) {
-        return new PermissionProviderImpl(root, principals, securityProvider);
+        return new PermissionProviderImpl(root, principals, getSecurityProvider());
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java Thu Jun  6 09:43:40 2013
@@ -21,7 +21,7 @@ import javax.annotation.Nonnull;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
-import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
@@ -30,14 +30,13 @@ import org.apache.jackrabbit.oak.spi.sec
 /**
  * Default implementation of the {@code PrincipalConfiguration}
  */
-public class PrincipalConfigurationImpl extends SecurityConfiguration.Default implements PrincipalConfiguration {
-
-    private final SecurityProvider securityProvider;
+public class PrincipalConfigurationImpl extends ConfigurationBase implements PrincipalConfiguration {
 
     public PrincipalConfigurationImpl(SecurityProvider securityProvider) {
-        this.securityProvider = securityProvider;
+        super(securityProvider);
     }
 
+    //---------------------------------------------< PrincipalConfiguration >---
     @Nonnull
     @Override
     public PrincipalManager getPrincipalManager(Root root, NamePathMapper namePathMapper) {
@@ -48,7 +47,14 @@ public class PrincipalConfigurationImpl 
     @Nonnull
     @Override
     public PrincipalProvider getPrincipalProvider(Root root, NamePathMapper namePathMapper) {
-        UserConfiguration uc = securityProvider.getConfiguration(UserConfiguration.class);
+        UserConfiguration uc = getSecurityProvider().getConfiguration(UserConfiguration.class);
         return new PrincipalProviderImpl(root, uc, namePathMapper);
     }
+
+    //----------------------------------------------< SecurityConfiguration >---
+    @Nonnull
+    @Override
+    public String getName() {
+        return NAME;
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java Thu Jun  6 09:43:40 2013
@@ -18,7 +18,6 @@ package org.apache.jackrabbit.oak.securi
 
 import java.util.Collections;
 import java.util.List;
-
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
@@ -27,14 +26,14 @@ import org.apache.jackrabbit.oak.namepat
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
 import org.apache.jackrabbit.oak.spi.security.Context;
-import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConfiguration;
 
 /**
  * Configuration for the privilege management component.
  */
-public class PrivilegeConfigurationImpl extends SecurityConfiguration.Default implements PrivilegeConfiguration {
+public class PrivilegeConfigurationImpl extends ConfigurationBase implements PrivilegeConfiguration {
 
     //---------------------------------------------< PrivilegeConfiguration >---
     @Nonnull
@@ -52,6 +51,12 @@ public class PrivilegeConfigurationImpl 
     //----------------------------------------------< SecurityConfiguration >---
     @Nonnull
     @Override
+    public String getName() {
+        return NAME;
+    }
+
+    @Nonnull
+    @Override
     public List<? extends CommitHook> getCommitHooks(String workspaceName) {
         return Collections.singletonList(new JcrAllCommitHook());
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java Thu Jun  6 09:43:40 2013
@@ -25,9 +25,8 @@ import org.apache.jackrabbit.oak.api.Roo
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.lifecycle.WorkspaceInitializer;
-import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
 import org.apache.jackrabbit.oak.spi.security.Context;
-import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
@@ -38,27 +37,23 @@ import org.apache.jackrabbit.oak.spi.xml
 /**
  * Default implementation of the {@link UserConfiguration}.
  */
-public class UserConfigurationImpl extends SecurityConfiguration.Default implements UserConfiguration {
-
-    private final ConfigurationParameters config;
-    private final SecurityProvider securityProvider;
+public class UserConfigurationImpl extends ConfigurationBase implements UserConfiguration {
 
     public UserConfigurationImpl(SecurityProvider securityProvider) {
-        this.config = securityProvider.getParameters(PARAM_USER_OPTIONS);
-        this.securityProvider = securityProvider;
+        super(securityProvider);
     }
 
     //----------------------------------------------< SecurityConfiguration >---
     @Nonnull
     @Override
-    public ConfigurationParameters getParameters() {
-        return config;
+    public String getName() {
+        return NAME;
     }
 
     @Nonnull
     @Override
     public WorkspaceInitializer getWorkspaceInitializer() {
-        return new UserInitializer(securityProvider);
+        return new UserInitializer(getSecurityProvider());
     }
 
     @Nonnull
@@ -70,7 +65,7 @@ public class UserConfigurationImpl exten
     @Nonnull
     @Override
     public List<ProtectedItemImporter> getProtectedItemImporters() {
-        return Collections.<ProtectedItemImporter>singletonList(new UserImporter(config));
+        return Collections.<ProtectedItemImporter>singletonList(new UserImporter(getParameters()));
     }
 
     @Nonnull
@@ -83,14 +78,14 @@ public class UserConfigurationImpl exten
     @Nonnull
     @Override
     public UserManager getUserManager(Root root, NamePathMapper namePathMapper) {
-        return new UserManagerImpl(root, namePathMapper, securityProvider);
+        return new UserManagerImpl(root, namePathMapper, getSecurityProvider());
     }
 
     @Nonnull
     @Override
     public AuthorizableActionProvider getAuthorizableActionProvider() {
         // TODO OAK-521: add proper implementation
-        AuthorizableActionProvider defProvider = new DefaultAuthorizableActionProvider(securityProvider, config);
-        return config.getConfigValue(UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER, defProvider);
+        AuthorizableActionProvider defProvider = new DefaultAuthorizableActionProvider(getSecurityProvider(), getParameters());
+        return getParameters().getConfigValue(UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER, defProvider);
     }
 }

Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java?rev=1490214&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java Thu Jun  6 09:43:40 2013
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.spi.security;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Abstract base implementation for the various security configurations.
+ */
+public abstract class ConfigurationBase extends SecurityConfiguration.Default {
+
+    private final SecurityProvider securityProvider;
+    private final ConfigurationParameters config;
+
+    public ConfigurationBase() {
+        securityProvider = null;
+        config = ConfigurationParameters.EMPTY;
+    }
+
+    public ConfigurationBase(SecurityProvider securityProvider) {
+        this.securityProvider = securityProvider;
+        this.config = securityProvider.getParameters(getName());
+    }
+
+    @Nonnull
+    protected SecurityProvider getSecurityProvider() {
+        if (securityProvider == null) {
+            throw new IllegalStateException();
+        }
+        return securityProvider;
+    }
+
+    //----------------------------------------------< SecurityConfiguration >---
+    @Nonnull
+    @Override
+    public ConfigurationParameters getParameters() {
+        return config;
+    }
+}

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationParameters.java Thu Jun  6 09:43:40 2013
@@ -17,7 +17,11 @@
 package org.apache.jackrabbit.oak.spi.security;
 
 import java.util.Collections;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.Map;
+import java.util.Properties;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -44,6 +48,31 @@ public class ConfigurationParameters {
         this.options = (options == null) ? Collections.<String, Object>emptyMap() : Collections.unmodifiableMap(options);
     }
 
+    public static ConfigurationParameters newInstance(Properties properties) {
+        if (properties.isEmpty()) {
+            return EMPTY;
+        }
+
+        Map<String, Object> options = new HashMap<String, Object>(properties.size());
+        for (String name : properties.stringPropertyNames()) {
+            options.put(name, properties.getProperty(name));
+        }
+        return new ConfigurationParameters(options);
+    }
+
+    public static ConfigurationParameters newInstance(Dictionary<String, Object> properties) {
+        if (properties.isEmpty()) {
+            return EMPTY;
+        }
+
+        Map<String, Object> options = new HashMap<String, Object>(properties.size());
+        for (Enumeration<String> keys = properties.keys(); keys.hasMoreElements();) {
+            String key = keys.nextElement();
+            options.put(key, properties.get(key));
+        }
+        return new ConfigurationParameters(options);
+    }
+
     /**
      * Returns {@code true} if this instance contains a configuration entry with
      * the specified key irrespective of the defined value; {@code false} otherwise.

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/SecurityConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/SecurityConfiguration.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/SecurityConfiguration.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/SecurityConfiguration.java Thu Jun  6 09:43:40 2013
@@ -33,6 +33,9 @@ import org.apache.jackrabbit.oak.spi.xml
 public interface SecurityConfiguration {
 
     @Nonnull
+    String getName();
+
+    @Nonnull
     ConfigurationParameters getParameters();
 
     @Nonnull
@@ -57,6 +60,12 @@ public interface SecurityConfiguration {
 
         @Nonnull
         @Override
+        public String getName() {
+            return "org.apache.jackrabbit.oak";
+        }
+
+        @Nonnull
+        @Override
         public ConfigurationParameters getParameters() {
             return ConfigurationParameters.EMPTY;
         }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java Thu Jun  6 09:43:40 2013
@@ -28,10 +28,10 @@ import org.apache.jackrabbit.oak.spi.sec
  */
 public interface AuthenticationConfiguration extends SecurityConfiguration {
 
-    String PARAM_AUTHENTICATION_OPTIONS = "org.apache.jackrabbit.oak.authentication.options";
-    String PARAM_TOKEN_OPTIONS = "org.apache.jackrabbit.oak.authentication.token.options";
+    String NAME = "org.apache.jackrabbit.oak.authentication";
 
-    String PARAM_APP_NAME = "org.apache.jackrabbit.oak.auth.appName";
+    String PARAM_TOKEN_OPTIONS = "org.apache.jackrabbit.oak.authentication.token";
+    String PARAM_APP_NAME = "org.apache.jackrabbit.oak.authentication.appName";
     String DEFAULT_APP_NAME = "jackrabbit.oak";
 
     @Nonnull
@@ -39,4 +39,4 @@ public interface AuthenticationConfigura
 
     @Nonnull
     TokenProvider getTokenProvider(Root root);
-}
\ No newline at end of file
+}

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlConfiguration.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlConfiguration.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlConfiguration.java Thu Jun  6 09:43:40 2013
@@ -32,7 +32,7 @@ import org.apache.jackrabbit.oak.spi.sec
  */
 public interface AccessControlConfiguration extends SecurityConfiguration {
 
-    String PARAM_ACCESS_CONTROL_OPTIONS = "org.apache.jackrabbit.oak.accesscontrol.options";
+    String NAME = "org.apache.jackrabbit.oak.accesscontrol";
 
     @Nonnull
     AccessControlManager getAccessControlManager(@Nonnull Root root,

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalConfiguration.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalConfiguration.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalConfiguration.java Thu Jun  6 09:43:40 2013
@@ -28,6 +28,8 @@ import org.apache.jackrabbit.oak.spi.sec
  */
 public interface PrincipalConfiguration extends SecurityConfiguration {
 
+    String NAME = "org.apache.jackrabbit.oak.principal";
+
     /**
      * Returns an instance of {@link PrincipalManager} that can be used
      * to query and retrieve principals such as needed for JCR access control
@@ -68,4 +70,4 @@ public interface PrincipalConfiguration 
      */
     @Nonnull
     PrincipalProvider getPrincipalProvider(Root root, NamePathMapper namePathMapper);
-}
\ No newline at end of file
+}

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeConfiguration.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeConfiguration.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeConfiguration.java Thu Jun  6 09:43:40 2013
@@ -29,6 +29,8 @@ import org.apache.jackrabbit.oak.spi.sec
  */
 public interface PrivilegeConfiguration extends SecurityConfiguration {
 
+    String NAME = "org.apache.jackrabbit.oak.privilege";
+
     /**
      * Creates a new instance of {@link PrivilegeManager}.
      *

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConfiguration.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConfiguration.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConfiguration.java Thu Jun  6 09:43:40 2013
@@ -29,11 +29,11 @@ import org.apache.jackrabbit.oak.spi.sec
  */
 public interface UserConfiguration extends SecurityConfiguration {
 
-    String PARAM_USER_OPTIONS = "org.apache.jackrabbit.oak.user.options";
+    String NAME = "org.apache.jackrabbit.oak.user";
 
     @Nonnull
     UserManager getUserManager(Root root, NamePathMapper namePathMapper);
 
     @Nonnull
     AuthorizableActionProvider getAuthorizableActionProvider();
-}
\ No newline at end of file
+}

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/Jr2CompatibilityTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/Jr2CompatibilityTest.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/Jr2CompatibilityTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/Jr2CompatibilityTest.java Thu Jun  6 09:43:40 2013
@@ -85,7 +85,7 @@ public class Jr2CompatibilityTest extend
         Map<String, String> map = Collections.singletonMap(AccessControlConstants.PARAM_PERMISSIONS_JR2, AccessControlConstants.VALUE_PERMISSIONS_JR2);
         ConfigurationParameters acConfig = new ConfigurationParameters(map);
 
-        return new ConfigurationParameters(ImmutableMap.of(AccessControlConfiguration.PARAM_ACCESS_CONTROL_OPTIONS, acConfig));
+        return new ConfigurationParameters(ImmutableMap.of(AccessControlConfiguration.NAME, acConfig));
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java Thu Jun  6 09:43:40 2013
@@ -88,7 +88,7 @@ public class PermissionProviderImplTest 
         map.put(PARAM_ADMINISTRATOR_PRINCIPALS, new String[] {ADMINISTRATOR_GROUP});
         ConfigurationParameters acConfig = new ConfigurationParameters(map);
 
-        return new ConfigurationParameters(ImmutableMap.of(AccessControlConfiguration.PARAM_ACCESS_CONTROL_OPTIONS, acConfig));
+        return new ConfigurationParameters(ImmutableMap.of(AccessControlConfiguration.NAME, acConfig));
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java Thu Jun  6 09:43:40 2013
@@ -142,7 +142,7 @@ public class UserInitializerTest extends
         userParams.put(UserConstants.PARAM_ADMIN_ID, "admin");
         userParams.put(UserConstants.PARAM_OMIT_ADMIN_PW, true);
 
-        ConfigurationParameters params = new ConfigurationParameters(ImmutableMap.of(UserConfiguration.PARAM_USER_OPTIONS, new ConfigurationParameters(userParams)));
+        ConfigurationParameters params = new ConfigurationParameters(ImmutableMap.of(UserConfiguration.NAME, new ConfigurationParameters(userParams)));
         SecurityProvider sp = new SecurityProviderImpl(params);
         final ContentRepository repo = new Oak().with(new InitialContent())
                 .with(new PropertyIndexEditorProvider())

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java Thu Jun  6 09:43:40 2013
@@ -50,7 +50,7 @@ public class AccessControlActionTest ext
         map.put(AccessControlAction.USER_PRIVILEGE_NAMES, PrivilegeConstants.JCR_ALL);
 
         ConfigurationParameters userConfig = new ConfigurationParameters(map);
-        return new ConfigurationParameters(ImmutableMap.of(UserConfiguration.PARAM_USER_OPTIONS, userConfig));
+        return new ConfigurationParameters(ImmutableMap.of(UserConfiguration.NAME, userConfig));
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java?rev=1490214&r1=1490213&r2=1490214&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java Thu Jun  6 09:43:40 2013
@@ -71,7 +71,7 @@ public abstract class AbstractImportTest
         if (importBehavior != null) {
             Map<String,String> userParams = new HashMap();
             userParams.put(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, getImportBehavior());
-            ConfigurationParameters config = new ConfigurationParameters(ImmutableMap.of(UserConfiguration.PARAM_USER_OPTIONS, new ConfigurationParameters(userParams)));
+            ConfigurationParameters config = new ConfigurationParameters(ImmutableMap.of(UserConfiguration.NAME, new ConfigurationParameters(userParams)));
 
             SecurityProvider securityProvider = new SecurityProviderImpl(config);
             String dir = "target/mk-tck-" + System.currentTimeMillis();