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/05/16 22:44:16 UTC

svn commit: r1483556 [1/2] - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/ oak-core/src/main/java/org/apache/jackrabbit/oak/core/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/ oak-core/src/main/java/org/apache...

Author: angela
Date: Thu May 16 20:44:15 2013
New Revision: 1483556

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

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java
    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/authentication/token/TokenLoginModule.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.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/authorization/AccessControlImporter.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlValidatorProvider.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.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/user/UserConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/OpenSecurityProvider.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/SecurityProvider.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlAction.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/GuestDefaultLoginModuleTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/Jackrabbit2ConfigurationTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/TokenDefaultLoginModuleTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginTestBase.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModuleTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/UserAuthenticationTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ACLTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/AccessControlValidatorTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ReadPolicyTest.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/CompiledPermissionImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHookTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/AuthorizableImplTest.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/security/user/UserValidatorTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/AbstractAccessControlListTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/AbstractAccessControlTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java Thu May 16 20:44:15 2013
@@ -16,14 +16,9 @@
  */
 package org.apache.jackrabbit.oak;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Lists.newArrayList;
-import static java.util.concurrent.Executors.newScheduledThreadPool;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ScheduledExecutorService;
-
 import javax.annotation.Nonnull;
 import javax.jcr.NoSuchWorkspaceException;
 import javax.security.auth.login.LoginException;
@@ -39,8 +34,8 @@ import org.apache.jackrabbit.oak.core.Co
 import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
 import org.apache.jackrabbit.oak.plugins.commit.ConflictHook;
 import org.apache.jackrabbit.oak.plugins.index.CompositeIndexEditorProvider;
-import org.apache.jackrabbit.oak.plugins.index.IndexUpdateProvider;
 import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.IndexUpdateProvider;
 import org.apache.jackrabbit.oak.plugins.observation2.EventQueueWriterProvider;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider;
@@ -57,10 +52,15 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConfiguration;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.Lists.newArrayList;
+import static java.util.concurrent.Executors.newScheduledThreadPool;
+
 /**
  * Builder class for constructing {@link ContentRepository} instances with
  * a set of specified plugin components. This class acts as a public facade
@@ -214,7 +214,7 @@ public class Oak {
     @Nonnull
     public Oak with(@Nonnull SecurityProvider securityProvider) {
         this.securityProvider = checkNotNull(securityProvider);
-        initializers.add(securityProvider.getPrivilegeConfiguration().getPrivilegeInitializer());
+        initializers.add(securityProvider.getConfiguration(PrivilegeConfiguration.class).getPrivilegeInitializer());
         return this;
     }
 
@@ -255,7 +255,7 @@ public class Oak {
         // FIXME: OAK-810 move to proper workspace initialization
         // initialize default workspace
         Iterable<WorkspaceInitializer> workspaceInitializers =
-                Iterables.transform(securityProvider.getSecurityConfigurations(),
+                Iterables.transform(securityProvider.getConfigurations(),
                         new Function<SecurityConfiguration, WorkspaceInitializer>() {
                             @Override
                             public WorkspaceInitializer apply(SecurityConfiguration sc) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java Thu May 16 20:44:15 2013
@@ -28,6 +28,7 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 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.LoginContext;
 import org.apache.jackrabbit.oak.spi.security.authentication.LoginContextProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -81,7 +82,7 @@ public class ContentRepositoryImpl imple
             throw new NoSuchWorkspaceException(workspaceName);
         }
 
-        LoginContextProvider lcProvider = securityProvider.getAuthenticationConfiguration().getLoginContextProvider(this);
+        LoginContextProvider lcProvider = securityProvider.getConfiguration(AuthenticationConfiguration.class).getLoginContextProvider(this);
         LoginContext loginContext = lcProvider.getLoginContext(credentials, workspaceName);
         loginContext.login();
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java Thu May 16 20:44:15 2013
@@ -18,17 +18,12 @@
  */
 package org.apache.jackrabbit.oak.core;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.commons.PathUtils.getName;
-import static org.apache.jackrabbit.oak.commons.PathUtils.getParentPath;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-
 import javax.annotation.Nonnull;
 import javax.security.auth.Subject;
 
@@ -58,6 +53,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
 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;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -65,6 +61,10 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStoreBranch;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.apache.jackrabbit.oak.commons.PathUtils.getName;
+import static org.apache.jackrabbit.oak.commons.PathUtils.getParentPath;
+
 public class RootImpl implements Root {
 
     /**
@@ -265,7 +265,7 @@ public class RootImpl implements Root {
         List<CommitHook> commitHooks = new ArrayList<CommitHook>();
         commitHooks.add(hook);
         List<CommitHook> postValidationHooks = new ArrayList<CommitHook>();
-        for (SecurityConfiguration sc : securityProvider.getSecurityConfigurations()) {
+        for (SecurityConfiguration sc : securityProvider.getConfigurations()) {
             for (CommitHook ch : sc.getCommitHooks(workspaceName)) {
                 if (ch instanceof PostValidationHook) {
                     postValidationHooks.add(ch);
@@ -443,12 +443,17 @@ public class RootImpl implements Root {
 
     @Nonnull
     private PermissionProvider createPermissionProvider() {
-        return securityProvider.getAccessControlConfiguration().getPermissionProvider(this, subject.getPrincipals());
+        return getAcConfig().getPermissionProvider(this, subject.getPrincipals());
     }
 
     @Nonnull
     private Context getAcContext() {
-        return securityProvider.getAccessControlConfiguration().getContext();
+        return getAcConfig().getContext();
+    }
+
+    @Nonnull
+    private AccessControlConfiguration getAcConfig() {
+        return securityProvider.getConfiguration(AccessControlConfiguration.class);
     }
 
     //---------------------------------------------------------< MoveRecord >---

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=1483556&r1=1483555&r2=1483556&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 May 16 20:44:15 2013
@@ -48,14 +48,15 @@ public class SecurityProviderImpl implem
 
     @Nonnull
     @Override
-    public ConfigurationParameters getConfiguration(String name) {
+    public ConfigurationParameters getParameters(String name) {
         return (name == null) ? configuration : configuration.getConfigValue(name, new ConfigurationParameters());
     }
 
     @Nonnull
     @Override
-    public Iterable<SecurityConfiguration> getSecurityConfigurations() {
+    public Iterable<? extends SecurityConfiguration> getConfigurations() {
         Set<SecurityConfiguration> scs = new HashSet<SecurityConfiguration>();
+        scs.add(getAuthenticationConfiguration());
         scs.add(getAccessControlConfiguration());
         scs.add(getUserConfiguration());
         scs.add(getPrincipalConfiguration());
@@ -65,31 +66,44 @@ public class SecurityProviderImpl implem
 
     @Nonnull
     @Override
-    public AuthenticationConfiguration getAuthenticationConfiguration() {
+    public <T> T getConfiguration(Class<T> configClass) {
+        if (AuthenticationConfiguration.class == configClass) {
+            return (T) getAuthenticationConfiguration();
+        } else if (AccessControlConfiguration.class == configClass) {
+            return (T) getAccessControlConfiguration();
+        } else if (UserConfiguration.class == configClass) {
+            return (T) getUserConfiguration();
+        } else if (PrincipalConfiguration.class == configClass) {
+            return (T) getPrincipalConfiguration();
+        } else if (PrivilegeConfiguration.class == configClass) {
+            return (T) getPrivilegeConfiguration();
+        } else {
+            throw new IllegalArgumentException("Unsupported security configuration class " + configClass);
+        }
+    }
+
+    @Nonnull
+    private AuthenticationConfiguration getAuthenticationConfiguration() {
         return new AuthenticationConfigurationImpl(this);
     }
 
     @Nonnull
-    @Override
-    public AccessControlConfiguration getAccessControlConfiguration() {
+    private AccessControlConfiguration getAccessControlConfiguration() {
         return new AccessControlConfigurationImpl(this);
     }
 
     @Nonnull
-    @Override
-    public PrivilegeConfiguration getPrivilegeConfiguration() {
+    private PrivilegeConfiguration getPrivilegeConfiguration() {
         return new PrivilegeConfigurationImpl();
     }
 
     @Nonnull
-    @Override
-    public UserConfiguration getUserConfiguration() {
+    private UserConfiguration getUserConfiguration() {
         return new UserConfigurationImpl(this);
     }
 
     @Nonnull
-    @Override
-    public PrincipalConfiguration getPrincipalConfiguration() {
+    private PrincipalConfiguration getPrincipalConfiguration() {
         return new PrincipalConfigurationImpl(this);
     }
 }

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=1483556&r1=1483555&r2=1483556&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 May 16 20:44:15 2013
@@ -29,6 +29,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
 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;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -57,7 +58,7 @@ public class AuthenticationConfiguration
 
     public AuthenticationConfigurationImpl(SecurityProvider securityProvider) {
         this.securityProvider = securityProvider;
-        this.config = securityProvider.getConfiguration(PARAM_AUTHENTICATION_OPTIONS);
+        this.config = securityProvider.getParameters(PARAM_AUTHENTICATION_OPTIONS);
     }
 
     /**
@@ -122,6 +123,7 @@ public class AuthenticationConfiguration
     @Override
     public TokenProvider getTokenProvider(Root root) {
         ConfigurationParameters tokenOptions = config.getConfigValue(PARAM_TOKEN_OPTIONS, new ConfigurationParameters());
-        return new TokenProviderImpl(root, tokenOptions, securityProvider.getUserConfiguration());
+        UserConfiguration uc = securityProvider.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/authentication/token/TokenLoginModule.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java Thu May 16 20:44:15 2013
@@ -35,6 +35,7 @@ import org.apache.jackrabbit.oak.api.Roo
 import org.apache.jackrabbit.oak.spi.security.authentication.AuthInfoImpl;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authentication.AbstractLoginModule;
+import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
 import org.apache.jackrabbit.oak.spi.security.authentication.callback.TokenProviderCallback;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenInfo;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
@@ -211,7 +212,8 @@ public final class TokenLoginModule exte
         SecurityProvider securityProvider = getSecurityProvider();
         Root root = getRoot();
         if (root != null && securityProvider != null) {
-            provider = securityProvider.getAuthenticationConfiguration().getTokenProvider(root);
+            AuthenticationConfiguration authConfig = getSecurityProvider().getConfiguration(AuthenticationConfiguration.class);
+            provider = authConfig.getTokenProvider(root);
         }
         if (provider == null && callbackHandler != null) {
             try {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java Thu May 16 20:44:15 2013
@@ -32,11 +32,13 @@ import javax.security.auth.callback.Unsu
 import javax.security.auth.login.LoginException;
 
 import org.apache.jackrabbit.oak.api.AuthInfo;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.authentication.AuthInfoImpl;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authentication.AbstractLoginModule;
 import org.apache.jackrabbit.oak.spi.security.authentication.Authentication;
 import org.apache.jackrabbit.oak.spi.security.authentication.ImpersonationCredentials;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.util.UserUtility;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -202,7 +204,8 @@ public final class LoginModuleImpl exten
         if (sp == null) {
             return null;
         } else {
-            return UserUtility.getAnonymousId(sp.getUserConfiguration().getConfigurationParameters());
+            ConfigurationParameters params = sp.getConfiguration(UserConfiguration.class).getParameters();
+            return UserUtility.getAnonymousId(params);
         }
     }
 

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=1483556&r1=1483555&r2=1483556&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 May 16 20:44:15 2013
@@ -54,7 +54,7 @@ public class AccessControlConfigurationI
 
     public AccessControlConfigurationImpl(SecurityProvider securityProvider) {
         this.securityProvider = securityProvider;
-        config = securityProvider.getConfiguration(PARAM_ACCESS_CONTROL_OPTIONS);
+        config = securityProvider.getParameters(PARAM_ACCESS_CONTROL_OPTIONS);
     }
 
     //----------------------------------------------< SecurityConfiguration >---
@@ -66,7 +66,7 @@ public class AccessControlConfigurationI
 
     @Nonnull
     @Override
-    public ConfigurationParameters getConfigurationParameters() {
+    public ConfigurationParameters getParameters() {
         return config;
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlImporter.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlImporter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlImporter.java Thu May 16 20:44:15 2013
@@ -32,6 +32,7 @@ import javax.jcr.security.AccessControlM
 import javax.jcr.security.AccessControlPolicy;
 import javax.jcr.security.Privilege;
 
+import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.oak.api.Root;
@@ -41,6 +42,7 @@ import org.apache.jackrabbit.oak.plugins
 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.AccessControlConstants;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.oak.spi.xml.NodeInfo;
 import org.apache.jackrabbit.oak.spi.xml.PropInfo;
@@ -90,13 +92,15 @@ class AccessControlImporter implements P
             throw new IllegalStateException("Already initialized");
         }
         try {
-            AccessControlConfiguration config = securityProvider.getAccessControlConfiguration();
             if (isWorkspaceImport) {
+                AccessControlConfiguration config = securityProvider.getConfiguration(AccessControlConfiguration.class);
                 acMgr = config.getAccessControlManager(root, namePathMapper);
+                PrincipalConfiguration pConfig = securityProvider.getConfiguration(PrincipalConfiguration.class);
+                principalManager = pConfig.getPrincipalManager(root, namePathMapper);
             } else {
                 acMgr = session.getAccessControlManager();
+                principalManager = ((JackrabbitSession) session).getPrincipalManager();
             }
-            principalManager = securityProvider.getPrincipalConfiguration().getPrincipalManager(root, namePathMapper);
             ntMgr = ReadOnlyNodeTypeManager.getInstance(root, namePathMapper);
             initialized = true;
         } catch (RepositoryException e) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java Thu May 16 20:44:15 2013
@@ -74,7 +74,9 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions;
 import org.apache.jackrabbit.oak.spi.security.authorization.restriction.Restriction;
 import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConfiguration;
 import org.apache.jackrabbit.oak.spi.state.PropertyBuilder;
 import org.apache.jackrabbit.oak.util.NodeUtil;
 import org.apache.jackrabbit.oak.util.PropertyUtil;
@@ -113,14 +115,18 @@ public class AccessControlManagerImpl im
         this.root = root;
         this.namePathMapper = namePathMapper;
 
-        privilegeManager = securityProvider.getPrivilegeConfiguration().getPrivilegeManager(root, namePathMapper);
-        principalManager = securityProvider.getPrincipalConfiguration().getPrincipalManager(root, namePathMapper);
+        privilegeManager = getConfig(securityProvider, PrivilegeConfiguration.class).getPrivilegeManager(root, namePathMapper);
+        principalManager = getConfig(securityProvider, PrincipalConfiguration.class).getPrincipalManager(root, namePathMapper);
 
-        acConfig = securityProvider.getAccessControlConfiguration();
+        acConfig = getConfig(securityProvider, AccessControlConfiguration.class);
         restrictionProvider = acConfig.getRestrictionProvider();
         ntMgr = ReadOnlyNodeTypeManager.getInstance(root, namePathMapper);
 
-        readPaths = acConfig.getConfigurationParameters().getConfigValue(PARAM_READ_PATHS, DEFAULT_READ_PATHS);
+        readPaths = acConfig.getParameters().getConfigValue(PARAM_READ_PATHS, DEFAULT_READ_PATHS);
+    }
+
+    private static <T> T getConfig(SecurityProvider sp, Class<T> clss) {
+        return sp.getConfiguration(clss);
     }
 
     //-----------------------------------------------< AccessControlManager >---

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlValidatorProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlValidatorProvider.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlValidatorProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlValidatorProvider.java Thu May 16 20:44:15 2013
@@ -62,18 +62,17 @@ class AccessControlValidatorProvider ext
         Tree rootBefore = new ImmutableTree(before);
         Tree rootAfter = new ImmutableTree(after);
 
-        AccessControlConfiguration acConfig = securityProvider.getAccessControlConfiguration();
-        RestrictionProvider restrictionProvider = acConfig.getRestrictionProvider();
+        RestrictionProvider restrictionProvider = getConfig(AccessControlConfiguration.class).getRestrictionProvider();
 
-        Map<String, Privilege> privileges = getPrivileges(before, securityProvider.getPrivilegeConfiguration());
+        Map<String, Privilege> privileges = getPrivileges(before);
         ReadOnlyNodeTypeManager ntMgr = ReadOnlyNodeTypeManager.getInstance(before);
 
         return new AccessControlValidator(rootBefore, rootAfter, privileges, restrictionProvider, ntMgr);
     }
 
-    private Map<String, Privilege> getPrivileges(NodeState beforeRoot, PrivilegeConfiguration config) {
+    private Map<String, Privilege> getPrivileges(NodeState beforeRoot) {
         Root root = new ImmutableRoot(beforeRoot);
-        PrivilegeManager pMgr = config.getPrivilegeManager(root, NamePathMapper.DEFAULT);
+        PrivilegeManager pMgr = getConfig(PrivilegeConfiguration.class).getPrivilegeManager(root, NamePathMapper.DEFAULT);
         ImmutableMap.Builder privileges = ImmutableMap.builder();
         try {
             for (Privilege privilege : pMgr.getRegisteredPrivileges()) {
@@ -85,4 +84,7 @@ class AccessControlValidatorProvider ext
         return privileges.build();
     }
 
+    private <T> T getConfig(Class<T> configClass) {
+        return securityProvider.getConfiguration(configClass);
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java Thu May 16 20:44:15 2013
@@ -72,7 +72,7 @@ public class PermissionProviderImpl impl
                                   @Nonnull SecurityProvider securityProvider) {
         this.root = root;
         this.workspaceName = root.getContentSession().getWorkspaceName();
-        acConfig = securityProvider.getAccessControlConfiguration();
+        acConfig = securityProvider.getConfiguration(AccessControlConfiguration.class);
         if (principals.contains(SystemPrincipal.INSTANCE) || isAdmin(principals)) {
             compiledPermissions = AllPermissions.getInstance();
         } else {
@@ -83,7 +83,7 @@ public class PermissionProviderImpl impl
                 compiledPermissions = new CompiledPermissionImpl(principals,
                         permissionsTree, getBitsProvider(),
                         acConfig.getRestrictionProvider(),
-                        acConfig.getConfigurationParameters().getConfigValue(AccessControlConstants.PARAM_READ_PATHS, AccessControlConstants.DEFAULT_READ_PATHS));
+                        acConfig.getParameters().getConfigValue(AccessControlConstants.PARAM_READ_PATHS, AccessControlConstants.DEFAULT_READ_PATHS));
             }
         }
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java Thu May 16 20:44:15 2013
@@ -23,6 +23,7 @@ import javax.security.auth.Subject;
 import org.apache.jackrabbit.oak.core.ImmutableTree;
 import org.apache.jackrabbit.oak.core.TreeTypeProviderImpl;
 import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
+import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
 import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConstants;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
@@ -31,6 +32,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider;
 import org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
 /**
@@ -40,6 +42,7 @@ import org.apache.jackrabbit.oak.spi.sta
 public class PermissionValidatorProvider extends ValidatorProvider {
 
     private final SecurityProvider securityProvider;
+    private final AccessControlConfiguration acConfig;
     private final long jr2Permissions;
 
     private ReadOnlyNodeTypeManager ntMgr;
@@ -48,8 +51,9 @@ public class PermissionValidatorProvider
 
     public PermissionValidatorProvider(SecurityProvider securityProvider) {
         this.securityProvider = securityProvider;
+        this.acConfig = securityProvider.getConfiguration(AccessControlConfiguration.class);
 
-        ConfigurationParameters params = securityProvider.getAccessControlConfiguration().getConfigurationParameters();
+        ConfigurationParameters params = acConfig.getParameters();
         String compatValue = params.getNullableConfigValue(AccessControlConstants.PARAM_PERMISSIONS_JR2, null);
         jr2Permissions = Permissions.getPermissions(compatValue);
     }
@@ -67,14 +71,15 @@ public class PermissionValidatorProvider
 
     Context getAccessControlContext() {
         if (acCtx == null) {
-            acCtx = securityProvider.getAccessControlConfiguration().getContext();
+            acCtx = acConfig.getContext();
         }
         return acCtx;
     }
 
     Context getUserContext() {
         if (userCtx == null) {
-            userCtx = securityProvider.getUserConfiguration().getContext();
+            UserConfiguration uc = securityProvider.getConfiguration(UserConfiguration.class);
+            userCtx = uc.getContext();
         }
         return userCtx;
     }

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=1483556&r1=1483555&r2=1483556&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 May 16 20:44:15 2013
@@ -25,6 +25,7 @@ import org.apache.jackrabbit.oak.spi.sec
 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;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 
 /**
  * Default implementation of the {@code PrincipalConfiguration}
@@ -47,6 +48,7 @@ public class PrincipalConfigurationImpl 
     @Nonnull
     @Override
     public PrincipalProvider getPrincipalProvider(Root root, NamePathMapper namePathMapper) {
-        return new PrincipalProviderImpl(root, securityProvider.getUserConfiguration(), namePathMapper);
+        UserConfiguration uc = securityProvider.getConfiguration(UserConfiguration.class);
+        return new PrincipalProviderImpl(root, uc, namePathMapper);
     }
 }

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=1483556&r1=1483555&r2=1483556&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 May 16 20:44:15 2013
@@ -44,14 +44,14 @@ public class UserConfigurationImpl exten
     private final SecurityProvider securityProvider;
 
     public UserConfigurationImpl(SecurityProvider securityProvider) {
-        this.config = securityProvider.getConfiguration(PARAM_USER_OPTIONS);
+        this.config = securityProvider.getParameters(PARAM_USER_OPTIONS);
         this.securityProvider = securityProvider;
     }
 
     //----------------------------------------------< SecurityConfiguration >---
     @Nonnull
     @Override
-    public ConfigurationParameters getConfigurationParameters() {
+    public ConfigurationParameters getParameters() {
         return config;
     }
 
@@ -64,8 +64,7 @@ public class UserConfigurationImpl exten
     @Nonnull
     @Override
     public List<? extends ValidatorProvider> getValidators(String workspaceName) {
-        return Collections.singletonList(
-                new UserValidatorProvider(getConfigurationParameters()));
+        return Collections.singletonList(new UserValidatorProvider(getParameters()));
     }
 
     @Nonnull

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java Thu May 16 20:44:15 2013
@@ -100,7 +100,7 @@ class UserInitializer implements Workspa
         // TODO reconsider
         Root root = new RootImpl(store, commitHook, workspaceName, SystemSubject.INSTANCE, new OpenSecurityProvider(), indexProvider);
 
-        UserConfiguration userConfiguration = securityProvider.getUserConfiguration();
+        UserConfiguration userConfiguration = securityProvider.getConfiguration(UserConfiguration.class);
         UserManager userManager = userConfiguration.getUserManager(root, NamePathMapper.DEFAULT);
 
         String errorMsg = "Failed to initialize user content.";
@@ -120,7 +120,7 @@ class UserInitializer implements Workspa
                 IndexUtils.createIndexDefinition(index, "members", false, new String[]{UserConstants.REP_MEMBERS}, null);
             }
 
-            ConfigurationParameters params = userConfiguration.getConfigurationParameters();
+            ConfigurationParameters params = userConfiguration.getParameters();
             String adminId = params.getConfigValue(PARAM_ADMIN_ID, DEFAULT_ADMIN_ID);
             if (userManager.getAuthorizable(adminId) == null) {
                 userManager.createUser(adminId, params.getNullableConfigValue(PARAM_ADMIN_PW, adminId));

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java Thu May 16 20:44:15 2013
@@ -42,6 +42,7 @@ import org.apache.jackrabbit.oak.securit
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.oak.spi.security.user.AuthorizableType;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
@@ -78,8 +79,8 @@ public class UserManagerImpl implements 
         this.namePathMapper = namePathMapper;
         this.securityProvider = securityProvider;
 
-        UserConfiguration uc = securityProvider.getUserConfiguration();
-        this.config = uc.getConfigurationParameters();
+        UserConfiguration uc = securityProvider.getConfiguration(UserConfiguration.class);
+        this.config = uc.getParameters();
         this.userProvider = new UserProvider(root, config);
         this.membershipProvider = new MembershipProvider(root, config);
         this.authorizableActions = uc.getAuthorizableActionProvider().getAuthorizableActions();
@@ -307,7 +308,7 @@ public class UserManagerImpl implements 
 
     @Nonnull
     PrincipalManager getPrincipalManager() throws RepositoryException {
-        return securityProvider.getPrincipalConfiguration().getPrincipalManager(root, namePathMapper);
+        return securityProvider.getConfiguration(PrincipalConfiguration.class).getPrincipalManager(root, namePathMapper);
     }
 
     @Nonnull

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/OpenSecurityProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/OpenSecurityProvider.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/OpenSecurityProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/OpenSecurityProvider.java Thu May 16 20:44:15 2013
@@ -16,10 +16,10 @@
  */
 package org.apache.jackrabbit.oak.spi.security;
 
-import java.util.Collections;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import com.google.common.collect.ImmutableList;
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
@@ -40,44 +40,32 @@ public class OpenSecurityProvider implem
 
     @Nonnull
     @Override
-    public ConfigurationParameters getConfiguration(@Nullable String name) {
+    public ConfigurationParameters getParameters(@Nullable String name) {
         return ConfigurationParameters.EMPTY;
     }
 
     @Nonnull
     @Override
-    public Iterable<SecurityConfiguration> getSecurityConfigurations() {
-        return Collections.emptyList();
+    public Iterable<? extends SecurityConfiguration> getConfigurations() {
+        return ImmutableList.of(new OpenAuthenticationConfiguration(), new OpenAccessControlConfiguration(), new OpenPrivilegeConfiguration());
     }
 
     @Nonnull
     @Override
-    public AuthenticationConfiguration getAuthenticationConfiguration() {
-        return new OpenAuthenticationConfiguration();
-    }
-
-    @Nonnull
-    @Override
-    public AccessControlConfiguration getAccessControlConfiguration() {
-        return new OpenAccessControlConfiguration();
-    }
-
-    @Nonnull
-    @Override
-    public PrivilegeConfiguration getPrivilegeConfiguration() {
-        return new OpenPrivilegeConfiguration();
-    }
-
-    @Nonnull
-    @Override
-    public UserConfiguration getUserConfiguration() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Nonnull
-    @Override
-    public PrincipalConfiguration getPrincipalConfiguration() {
-        throw new UnsupportedOperationException();
+    public <T> T getConfiguration(Class<T> configClass) {
+        if (AuthenticationConfiguration.class == configClass) {
+            return (T) new OpenAuthenticationConfiguration();
+        } else if (AccessControlConfiguration.class == configClass) {
+            return (T) new OpenAccessControlConfiguration();
+        } else if (UserConfiguration.class == configClass) {
+            throw new UnsupportedOperationException();
+        } else if (PrincipalConfiguration.class == configClass) {
+            throw new UnsupportedOperationException();
+        } else if (PrivilegeConfiguration.class == configClass) {
+            return (T) new OpenPrivilegeConfiguration();
+        } else {
+            throw new IllegalArgumentException("Unsupported security configuration class " + configClass);
+        }
     }
 
     private static final class OpenPrivilegeConfiguration extends SecurityConfiguration.Default implements PrivilegeConfiguration {

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=1483556&r1=1483555&r2=1483556&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 May 16 20:44:15 2013
@@ -33,7 +33,7 @@ import org.apache.jackrabbit.oak.spi.xml
 public interface SecurityConfiguration {
 
     @Nonnull
-    ConfigurationParameters getConfigurationParameters();
+    ConfigurationParameters getParameters();
 
     @Nonnull
     WorkspaceInitializer getWorkspaceInitializer();
@@ -57,7 +57,7 @@ public interface SecurityConfiguration {
 
         @Nonnull
         @Override
-        public ConfigurationParameters getConfigurationParameters() {
+        public ConfigurationParameters getParameters() {
             return ConfigurationParameters.EMPTY;
         }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/SecurityProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/SecurityProvider.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/SecurityProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/SecurityProvider.java Thu May 16 20:44:15 2013
@@ -19,35 +19,17 @@ package org.apache.jackrabbit.oak.spi.se
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
-import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
-import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
-import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConfiguration;
-import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
-
 /**
  * SecurityProvider... TODO
  */
 public interface SecurityProvider {
 
     @Nonnull
-    ConfigurationParameters getConfiguration(@Nullable String name);
-
-    @Nonnull
-    Iterable<SecurityConfiguration> getSecurityConfigurations();
-
-    @Nonnull
-    AuthenticationConfiguration getAuthenticationConfiguration();
-
-    @Nonnull
-    AccessControlConfiguration getAccessControlConfiguration();
-
-    @Nonnull
-    PrivilegeConfiguration getPrivilegeConfiguration();
+    ConfigurationParameters getParameters(@Nullable String name);
 
     @Nonnull
-    UserConfiguration getUserConfiguration();
+    Iterable<? extends SecurityConfiguration> getConfigurations();
 
     @Nonnull
-    PrincipalConfiguration getPrincipalConfiguration();
+    <T> T getConfiguration(Class<T> configClass);
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java Thu May 16 20:44:15 2013
@@ -46,7 +46,9 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.authentication.callback.PrincipalProviderCallback;
 import org.apache.jackrabbit.oak.spi.security.authentication.callback.RepositoryCallback;
 import org.apache.jackrabbit.oak.spi.security.authentication.callback.UserManagerCallback;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -372,7 +374,8 @@ public abstract class AbstractLoginModul
         SecurityProvider sp = getSecurityProvider();
         Root root = getRoot();
         if (root != null && sp != null) {
-            userManager = sp.getUserConfiguration().getUserManager(root, NamePathMapper.DEFAULT);
+            UserConfiguration uc = securityProvider.getConfiguration(UserConfiguration.class);
+            userManager = uc.getUserManager(root, NamePathMapper.DEFAULT);
         }
 
         if (userManager == null && callbackHandler != null) {
@@ -403,7 +406,8 @@ public abstract class AbstractLoginModul
         SecurityProvider sp = getSecurityProvider();
         Root root = getRoot();
         if (root != null && sp != null) {
-            principalProvider = sp.getPrincipalConfiguration().getPrincipalProvider(root, NamePathMapper.DEFAULT);
+            PrincipalConfiguration pc = sp.getConfiguration(PrincipalConfiguration.class);
+            principalProvider = pc.getPrincipalProvider(root, NamePathMapper.DEFAULT);
         }
 
         if (principalProvider == null && callbackHandler != null) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlAction.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlAction.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlAction.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlAction.java Thu May 16 20:44:15 2013
@@ -35,6 +35,8 @@ import org.apache.jackrabbit.oak.api.Roo
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.util.UserUtility;
 import org.apache.jackrabbit.util.Text;
 import org.slf4j.Logger;
@@ -171,7 +173,8 @@ public class AccessControlAction extends
         }
 
         String path = authorizable.getPath();
-        AccessControlManager acMgr = securityProvider.getAccessControlConfiguration().getAccessControlManager(root, namePathMapper);
+        AccessControlConfiguration acConfig = securityProvider.getConfiguration(AccessControlConfiguration.class);
+        AccessControlManager acMgr = acConfig.getAccessControlManager(root, namePathMapper);
         JackrabbitAccessControlList acl = null;
         for (AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path); it.hasNext();) {
             AccessControlPolicy plc = it.nextAccessControlPolicy();
@@ -208,7 +211,7 @@ public class AccessControlAction extends
         if (authorizable.isGroup()) {
             return false;
         }
-        ConfigurationParameters userConfig = securityProvider.getUserConfiguration().getConfigurationParameters();
+        ConfigurationParameters userConfig = securityProvider.getConfiguration(UserConfiguration.class).getParameters();
         String userId = authorizable.getID();
         return UserUtility.getAdminId(userConfig).equals(userId) || UserUtility.getAnonymousId(userConfig).equals(userId);
     }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java Thu May 16 20:44:15 2013
@@ -46,6 +46,9 @@ import org.apache.jackrabbit.oak.securit
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authentication.ConfigurationUtil;
+import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.util.UserUtility;
 import org.junit.After;
@@ -123,7 +126,7 @@ public abstract class AbstractSecurityTe
     }
 
     protected Credentials getAdminCredentials() {
-        String adminId = UserUtility.getAdminId(getUserConfiguration().getConfigurationParameters());
+        String adminId = UserUtility.getAdminId(getUserConfiguration().getParameters());
         return new SimpleCredentials(adminId, adminId.toCharArray());
     }
 
@@ -132,22 +135,22 @@ public abstract class AbstractSecurityTe
     }
 
     protected UserConfiguration getUserConfiguration() {
-        return getSecurityProvider().getUserConfiguration();
+        return getConfig(UserConfiguration.class);
     }
 
-    protected UserManager getUserManager() {
+    protected UserManager getUserManager(Root root) {
         if (userManager == null) {
-            userManager = getUserConfiguration().getUserManager(root, namePathMapper);
+            userManager = getConfig(UserConfiguration.class).getUserManager(root, getNamePathMapper());
         }
         return userManager;
     }
 
-    protected PrincipalManager getPrincipalManager() {
-        return getSecurityProvider().getPrincipalConfiguration().getPrincipalManager(root, getNamePathMapper());
+    protected PrincipalManager getPrincipalManager(Root root) {
+        return getConfig(PrincipalConfiguration.class).getPrincipalManager(root, getNamePathMapper());
     }
     
     protected JackrabbitAccessControlManager getAccessControlManager(Root root) {
-        AccessControlManager acMgr = securityProvider.getAccessControlConfiguration().getAccessControlManager(root, NamePathMapper.DEFAULT);
+        AccessControlManager acMgr = getConfig(AccessControlConfiguration.class).getAccessControlManager(root, NamePathMapper.DEFAULT);
         if (acMgr instanceof JackrabbitAccessControlManager) {
             return (JackrabbitAccessControlManager) acMgr;
         } else {
@@ -158,14 +161,14 @@ public abstract class AbstractSecurityTe
     protected Privilege[] privilegesFromNames(String... privilegeNames) throws RepositoryException {
         Privilege[] privs = new Privilege[privilegeNames.length];
         for (int i = 0; i < privilegeNames.length; i++) {
-            privs[i] = getPrivilegeManager().getPrivilege(privilegeNames[i]);
+            privs[i] = getPrivilegeManager(root).getPrivilege(privilegeNames[i]);
         }
         return privs;
     }
 
-    protected PrivilegeManager getPrivilegeManager() {
+    protected PrivilegeManager getPrivilegeManager(Root root) {
         if (privMgr == null) {
-            privMgr = getSecurityProvider().getPrivilegeConfiguration().getPrivilegeManager(root, getNamePathMapper());
+            privMgr = getConfig(PrivilegeConfiguration.class).getPrivilegeManager(root, getNamePathMapper());
         }
         return privMgr;
     }
@@ -177,7 +180,7 @@ public abstract class AbstractSecurityTe
     protected User getTestUser() throws Exception {
         if (testUser == null) {
             String uid = "testUser" + UUID.randomUUID();
-            testUser = getUserManager().createUser(uid, uid);
+            testUser = getUserManager(root).createUser(uid, uid);
             root.commit();
         }
         return testUser;
@@ -187,4 +190,8 @@ public abstract class AbstractSecurityTe
         String uid = getTestUser().getID();
         return login(new SimpleCredentials(uid, uid.toCharArray()));
     }
+
+    protected <T> T getConfig(Class<T> configClass) {
+        return getSecurityProvider().getConfiguration(configClass);
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/GuestDefaultLoginModuleTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/GuestDefaultLoginModuleTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/GuestDefaultLoginModuleTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/GuestDefaultLoginModuleTest.java Thu May 16 20:44:15 2013
@@ -68,7 +68,7 @@ public class GuestDefaultLoginModuleTest
         ContentSession cs = login(null);
         try {
             AuthInfo authInfo = cs.getAuthInfo();
-            String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getConfigurationParameters());
+            String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getParameters());
             assertEquals(anonymousID, authInfo.getUserID());
         } finally {
             cs.close();
@@ -80,7 +80,7 @@ public class GuestDefaultLoginModuleTest
         ContentSession cs = login(new GuestCredentials());
         try {
             AuthInfo authInfo = cs.getAuthInfo();
-            String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getConfigurationParameters());
+            String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getParameters());
             assertEquals(anonymousID, authInfo.getUserID());
         } finally {
             cs.close();

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/Jackrabbit2ConfigurationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/Jackrabbit2ConfigurationTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/Jackrabbit2ConfigurationTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/Jackrabbit2ConfigurationTest.java Thu May 16 20:44:15 2013
@@ -42,7 +42,7 @@ public class Jackrabbit2ConfigurationTes
         ContentSession cs = login(null);
         try {
             AuthInfo authInfo = cs.getAuthInfo();
-            String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getConfigurationParameters());
+            String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getParameters());
             assertEquals(anonymousID, authInfo.getUserID());
         } finally {
             cs.close();

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/TokenDefaultLoginModuleTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/TokenDefaultLoginModuleTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/TokenDefaultLoginModuleTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/TokenDefaultLoginModuleTest.java Thu May 16 20:44:15 2013
@@ -28,6 +28,7 @@ import org.apache.jackrabbit.oak.Abstrac
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule;
+import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenInfo;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
 import org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl;
@@ -194,7 +195,8 @@ public class TokenDefaultLoginModuleTest
     @Test
     public void testValidTokenCredentials() throws Exception {
         Root root = adminSession.getLatestRoot();
-        TokenProvider tp = getSecurityProvider().getAuthenticationConfiguration().getTokenProvider(root);
+        AuthenticationConfiguration authConfig = getSecurityProvider().getConfiguration(AuthenticationConfiguration.class);
+        TokenProvider tp = authConfig.getTokenProvider(root);
 
         SimpleCredentials sc = (SimpleCredentials) getAdminCredentials();
         TokenInfo info = tp.createToken(sc.getUserID(), Collections.<String, Object>emptyMap());

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginTestBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginTestBase.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginTestBase.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginTestBase.java Thu May 16 20:44:15 2013
@@ -16,11 +16,9 @@
  */
 package org.apache.jackrabbit.oak.security.authentication.ldap;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import javax.jcr.RepositoryException;
 import javax.jcr.SimpleCredentials;
 import javax.security.auth.login.AppConfigurationEntry;
 import javax.security.auth.login.Configuration;
@@ -34,6 +32,7 @@ import org.apache.jackrabbit.oak.api.Con
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.security.authentication.external.ExternalLoginModule;
 import org.apache.jackrabbit.oak.spi.security.authentication.external.SyncMode;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -120,7 +119,8 @@ public abstract class LdapLoginTestBase 
         options.put(LdapSettings.KEY_GROUPMEMBERSHIPATTRIBUTE, InternalLdapServer.GROUP_MEMBER_ATTR);
         options.put(ExternalLoginModule.PARAM_SYNC_MODE, SyncMode.CREATE_USER);
 
-        userManager = securityProvider.getUserConfiguration().getUserManager(root, NamePathMapper.DEFAULT);
+        UserConfiguration uc = securityProvider.getConfiguration(UserConfiguration.class);
+        userManager = uc.getUserManager(root, NamePathMapper.DEFAULT);
     }
 
     @After

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModuleTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModuleTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModuleTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModuleTest.java Thu May 16 20:44:15 2013
@@ -27,7 +27,7 @@ import org.apache.jackrabbit.api.securit
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule;
+import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenInfo;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
 import org.junit.Test;
@@ -137,7 +137,8 @@ public class TokenLoginModuleTest extend
     @Test
     public void testValidTokenCredentials() throws Exception {
         Root root = adminSession.getLatestRoot();
-        TokenProvider tp = getSecurityProvider().getAuthenticationConfiguration().getTokenProvider(root);
+        AuthenticationConfiguration authConfig = getSecurityProvider().getConfiguration(AuthenticationConfiguration.class);
+        TokenProvider tp = authConfig.getTokenProvider(root);
 
         SimpleCredentials sc = (SimpleCredentials) getAdminCredentials();
         TokenInfo info = tp.createToken(sc.getUserID(), Collections.<String, Object>emptyMap());

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImplTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImplTest.java Thu May 16 20:44:15 2013
@@ -141,7 +141,7 @@ public class TokenProviderImplTest exten
 
         TokenInfo info = tokenProvider.createToken(userId, attributes);
 
-        Tree userTree = root.getTree(getUserManager().getAuthorizable(userId).getPath());
+        Tree userTree = root.getTree(getUserManager(root).getAuthorizable(userId).getPath());
         Tree tokens = userTree.getChild(".tokens");
         assertTrue(tokens.exists());
         assertEquals(1, tokens.getChildrenCount());
@@ -212,7 +212,7 @@ public class TokenProviderImplTest exten
     public void testRemoveTokenRemovesNode() throws Exception {
         TokenInfo info = tokenProvider.createToken(userId, Collections.<String, Object>emptyMap());
 
-        Tree userTree = root.getTree(getUserManager().getAuthorizable(userId).getPath());
+        Tree userTree = root.getTree(getUserManager(root).getAuthorizable(userId).getPath());
         Tree tokens = userTree.getChild(".tokens");
         String tokenNodePath = tokens.getChildren().iterator().next().getPath();
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java Thu May 16 20:44:15 2013
@@ -16,11 +16,6 @@
  */
 package org.apache.jackrabbit.oak.security.authentication.user;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-
 import javax.jcr.GuestCredentials;
 import javax.jcr.SimpleCredentials;
 import javax.security.auth.login.Configuration;
@@ -35,10 +30,16 @@ import org.apache.jackrabbit.oak.api.Con
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.authentication.ConfigurationUtil;
 import org.apache.jackrabbit.oak.spi.security.authentication.ImpersonationCredentials;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.apache.jackrabbit.oak.spi.security.user.util.UserUtility;
 import org.junit.Test;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
 /**
  * LoginTest...
  */
@@ -69,7 +70,7 @@ public class LoginModuleImplTest extends
         ContentSession cs = login(new GuestCredentials());
         try {
             AuthInfo authInfo = cs.getAuthInfo();
-            String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getConfigurationParameters());
+            String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getParameters());
             assertEquals(anonymousID, authInfo.getUserID());
         } finally {
             cs.close();
@@ -78,9 +79,9 @@ public class LoginModuleImplTest extends
 
     @Test
     public void testAnonymousLogin() throws Exception {
-        String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getConfigurationParameters());
+        String anonymousID = UserUtility.getAnonymousId(getUserConfiguration().getParameters());
 
-        UserManager userMgr = getUserManager();
+        UserManager userMgr = getUserManager(root);
 
         // verify initial user-content looks like expected
         Authorizable anonymous = userMgr.getAuthorizable(anonymousID);
@@ -102,7 +103,7 @@ public class LoginModuleImplTest extends
 
     @Test
     public void testUserLogin() throws Exception {
-        UserManager userManager = getUserManager();
+        UserManager userManager = getUserManager(root);
         ContentSession cs = null;
         User user = null;
         try {
@@ -125,7 +126,7 @@ public class LoginModuleImplTest extends
 
     @Test
     public void testSelfImpersonation() throws Exception {
-        UserManager userManager = getUserManager();
+        UserManager userManager = getUserManager(root);
         ContentSession cs = null;
         User user = null;
         try {
@@ -159,7 +160,7 @@ public class LoginModuleImplTest extends
 
     @Test
     public void testInvalidImpersonation() throws Exception {
-        UserManager userManager = getUserManager();
+        UserManager userManager = getUserManager(root);
         ContentSession cs = null;
         User user = null;
         try {
@@ -175,7 +176,8 @@ public class LoginModuleImplTest extends
             cs.close();
             cs = null;
 
-            String adminId = UserUtility.getAdminId(securityProvider.getUserConfiguration().getConfigurationParameters());
+            ConfigurationParameters config = securityProvider.getConfiguration(UserConfiguration.class).getParameters();
+            String adminId = UserUtility.getAdminId(config);
             sc = new SimpleCredentials(adminId, new char[0]);
             ImpersonationCredentials ic = new ImpersonationCredentials(sc, authInfo);
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/UserAuthenticationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/UserAuthenticationTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/UserAuthenticationTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/UserAuthenticationTest.java Thu May 16 20:44:15 2013
@@ -49,7 +49,7 @@ public class UserAuthenticationTest exte
     public void before() throws Exception {
         super.before();
         userId = getTestUser().getID();
-        authentication = new UserAuthentication(userId, getUserManager());
+        authentication = new UserAuthentication(userId, getUserManager(root));
     }
 
     @Test
@@ -60,7 +60,7 @@ public class UserAuthenticationTest exte
 
     @Test
     public void testAuthenticateWithoutUserId() throws Exception {
-        UserAuthentication authentication = new UserAuthentication(null, getUserManager());
+        UserAuthentication authentication = new UserAuthentication(null, getUserManager(root));
         assertFalse(authentication.authenticate(new SimpleCredentials(userId, userId.toCharArray())));
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ACLTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ACLTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ACLTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ACLTest.java Thu May 16 20:44:15 2013
@@ -83,8 +83,8 @@ public class ACLTest extends AbstractAcc
     public void before() throws Exception {
         super.before();
 
-        privilegeManager = getPrivilegeManager();
-        principalManager = getSecurityProvider().getPrincipalConfiguration().getPrincipalManager(root, getNamePathMapper());
+        privilegeManager = getPrivilegeManager(root);
+        principalManager = getPrincipalManager(root);
 
         acl = createEmptyACL();
         testPrincipal = getTestPrincipal();

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImplTest.java?rev=1483556&r1=1483555&r2=1483556&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImplTest.java Thu May 16 20:44:15 2013
@@ -173,7 +173,7 @@ public class AccessControlManagerImplTes
     }
 
     private ACL createPolicy(@Nullable String path) {
-        final PrincipalManager pm = getPrincipalManager();
+        final PrincipalManager pm = getPrincipalManager(root);
         final RestrictionProvider rp = getRestrictionProvider();
         return new ACL(path, getNamePathMapper()) {
             @Override
@@ -183,7 +183,7 @@ public class AccessControlManagerImplTes
 
             @Override
             PrivilegeManager getPrivilegeManager() {
-                return AccessControlManagerImplTest.this.getPrivilegeManager();
+                return AccessControlManagerImplTest.this.getPrivilegeManager(root);
             }
 
             @Override
@@ -257,7 +257,7 @@ public class AccessControlManagerImplTes
     //---------------------------------------------< getSupportedPrivileges >---
     @Test
     public void testGetSupportedPrivileges() throws Exception {
-        List<Privilege> allPrivileges = Arrays.asList(getPrivilegeManager().getRegisteredPrivileges());
+        List<Privilege> allPrivileges = Arrays.asList(getPrivilegeManager(root).getRegisteredPrivileges());
 
         List<String> testPaths = new ArrayList<String>();
         testPaths.add(null);
@@ -308,7 +308,7 @@ public class AccessControlManagerImplTes
 
     @Test
     public void testGetSupportedPrivilegesIncludingPathConversion() throws Exception {
-        List<Privilege> allPrivileges = Arrays.asList(getPrivilegeManager().getRegisteredPrivileges());
+        List<Privilege> allPrivileges = Arrays.asList(getPrivilegeManager(root).getRegisteredPrivileges());
 
         List<String> testPaths = new ArrayList<String>();
         testPaths.add('/' + TestNameMapper.TEST_LOCAL_PREFIX + ":testRoot");
@@ -327,7 +327,7 @@ public class AccessControlManagerImplTes
     //--------------------------------------------------< privilegeFromName >---
     @Test
     public void testPrivilegeFromName() throws Exception {
-        List<Privilege> allPrivileges = Arrays.asList(getPrivilegeManager().getRegisteredPrivileges());
+        List<Privilege> allPrivileges = Arrays.asList(getPrivilegeManager(root).getRegisteredPrivileges());
         for (Privilege privilege : allPrivileges) {
             Privilege p = acMgr.privilegeFromName(privilege.getName());
             assertEquals(privilege, p);
@@ -336,7 +336,7 @@ public class AccessControlManagerImplTes
 
     @Test
     public void testPrivilegeFromExpandedName() throws Exception {
-        Privilege readPriv = getPrivilegeManager().getPrivilege(PrivilegeConstants.JCR_READ);
+        Privilege readPriv = getPrivilegeManager(root).getPrivilege(PrivilegeConstants.JCR_READ);
         assertEquals(readPriv, acMgr.privilegeFromName(Privilege.JCR_READ));
     }
 
@@ -1475,10 +1475,10 @@ public class AccessControlManagerImplTes
 
     @Test
     public void testGetApplicablePoliciesInvalidPrincipal() throws Exception {
-        Principal unknown = getPrincipalManager().getPrincipal("unknown");
+        Principal unknown = getPrincipalManager(root).getPrincipal("unknown");
         int i = 0;
         while (unknown != null) {
-            unknown = getPrincipalManager().getPrincipal("unknown"+i);
+            unknown = getPrincipalManager(root).getPrincipal("unknown"+i);
         }
         unknown = new InvalidTestPrincipal("unknown" + i);
         try {
@@ -1491,10 +1491,10 @@ public class AccessControlManagerImplTes
 
     @Test
     public void testGetApplicablePoliciesInternalPrincipal() throws Exception {
-        Principal unknown = getPrincipalManager().getPrincipal("unknown");
+        Principal unknown = getPrincipalManager(root).getPrincipal("unknown");
         int i = 0;
         while (unknown != null) {
-            unknown = getPrincipalManager().getPrincipal("unknown"+i);
+            unknown = getPrincipalManager(root).getPrincipal("unknown"+i);
         }
         unknown = new PrincipalImpl("unknown" + i);
 
@@ -1538,8 +1538,6 @@ public class AccessControlManagerImplTes
         Root testRoot = getTestRoot();
         testRoot.refresh();
         JackrabbitAccessControlManager testAcMgr = getTestAccessControlManager();
-        PrincipalManager testPrincipalMgr = getSecurityProvider().getPrincipalConfiguration().getPrincipalManager(testRoot, getNamePathMapper());
-
         List<Principal> principals = ImmutableList.of(testPrincipal, EveryonePrincipal.getInstance());
         for (Principal principal : principals) {
             // testRoot can't read access control content -> doesn't see
@@ -1564,10 +1562,10 @@ public class AccessControlManagerImplTes
 
     @Test
     public void testGetPoliciesInvalidPrincipal() throws Exception {
-        Principal unknown = getPrincipalManager().getPrincipal("unknown");
+        Principal unknown = getPrincipalManager(root).getPrincipal("unknown");
         int i = 0;
         while (unknown != null) {
-            unknown = getPrincipalManager().getPrincipal("unknown"+i);
+            unknown = getPrincipalManager(root).getPrincipal("unknown"+i);
         }
         unknown = new InvalidTestPrincipal("unknown" + i);
         try {
@@ -1580,10 +1578,10 @@ public class AccessControlManagerImplTes
 
     @Test
     public void testGetPoliciesInternalPrincipal() throws Exception {
-        Principal unknown = getPrincipalManager().getPrincipal("unknown");
+        Principal unknown = getPrincipalManager(root).getPrincipal("unknown");
         int i = 0;
         while (unknown != null) {
-            unknown = getPrincipalManager().getPrincipal("unknown"+i);
+            unknown = getPrincipalManager(root).getPrincipal("unknown"+i);
         }
         unknown = new PrincipalImpl("unknown" + i);
         assertEquals(0, acMgr.getPolicies(unknown).length);
@@ -1624,7 +1622,7 @@ public class AccessControlManagerImplTes
         Root testRoot = getTestRoot();
         testRoot.refresh();
         JackrabbitAccessControlManager testAcMgr = getTestAccessControlManager();
-        PrincipalManager testPrincipalMgr = getSecurityProvider().getPrincipalConfiguration().getPrincipalManager(testRoot, getNamePathMapper());
+        PrincipalManager testPrincipalMgr = getPrincipalManager(testRoot);
 
         List<Principal> principals = ImmutableList.of(testPrincipal, EveryonePrincipal.getInstance());
         for (Principal principal : principals) {
@@ -1661,10 +1659,10 @@ public class AccessControlManagerImplTes
 
     @Test
     public void testGetEffectivePoliciesInvalidPrincipals() throws Exception {
-        Principal unknown = getPrincipalManager().getPrincipal("unknown");
+        Principal unknown = getPrincipalManager(root).getPrincipal("unknown");
         int i = 0;
         while (unknown != null) {
-            unknown = getPrincipalManager().getPrincipal("unknown"+i);
+            unknown = getPrincipalManager(root).getPrincipal("unknown"+i);
         }
         unknown = new InvalidTestPrincipal("unknown" + i);
         try {