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 fr...@apache.org on 2015/09/22 10:32:13 UTC

svn commit: r1704479 - in /jackrabbit/oak/trunk: oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/ oak-core/src/main/java/org/apache/jackrabbit/...

Author: frm
Date: Tue Sep 22 08:32:10 2015
New Revision: 1704479

URL: http://svn.apache.org/viewvc?rev=1704479&view=rev
Log:
iOAK-3434 - Revert backwards-incompatible changes to SecurityProviderImpl

Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/InternalSecurityProvider.java   (with props)
Modified:
    jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.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/internal/SecurityProviderRegistration.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/package-info.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java
    jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/SecurityProviderRegistrationTest.groovy

Modified: jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.java?rev=1704479&r1=1704478&r2=1704479&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.java (original)
+++ jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.java Tue Sep 22 08:32:10 2015
@@ -33,8 +33,12 @@ final class CugSecurityProvider extends
             composite.setDefaultConfig(authorizationConfiguration);
             composite.addConfiguration(new CugConfiguration(this));
             composite.addConfiguration(authorizationConfiguration);
-            setAuthorizationConfiguration(composite);
+            ((CugSecurityProvider) this).bindAuthorizationConfiguration(composite);
         }
     }
 
+    @Override
+    protected void bindAuthorizationConfiguration(@Nonnull AuthorizationConfiguration reference) {
+        super.bindAuthorizationConfiguration(reference);
+    }
 }
\ No newline at end of file

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=1704479&r1=1704478&r2=1704479&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 Tue Sep 22 08:32:10 2015
@@ -16,94 +16,116 @@
  */
 package org.apache.jackrabbit.oak.security;
 
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import com.google.common.collect.ImmutableMap;
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
 import org.apache.jackrabbit.oak.security.authentication.AuthenticationConfigurationImpl;
 import org.apache.jackrabbit.oak.security.authentication.token.TokenConfigurationImpl;
 import org.apache.jackrabbit.oak.security.authorization.AuthorizationConfigurationImpl;
 import org.apache.jackrabbit.oak.security.principal.PrincipalConfigurationImpl;
 import org.apache.jackrabbit.oak.security.privilege.PrivilegeConfigurationImpl;
 import org.apache.jackrabbit.oak.security.user.UserConfigurationImpl;
+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.token.CompositeTokenConfiguration;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
 import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
+import org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
+import org.apache.jackrabbit.oak.spi.security.principal.CompositePrincipalConfiguration;
 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.UserConstants;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
+import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardAuthorizableActionProvider;
+import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardAuthorizableNodeName;
 import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardAware;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardRestrictionProvider;
+import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUserAuthenticationFactory;
+import org.osgi.framework.BundleContext;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Sets.newHashSet;
 
+@Component
+@Service(value = {SecurityProvider.class})
 public class SecurityProviderImpl implements SecurityProvider, WhiteboardAware {
 
-    private AuthenticationConfiguration authenticationConfiguration;
+    @Reference
+    private volatile AuthorizationConfiguration authorizationConfiguration;
 
-    private AuthorizationConfiguration authorizationConfiguration;
+    @Reference
+    private volatile AuthenticationConfiguration authenticationConfiguration;
 
-    private UserConfiguration userConfiguration;
+    @Reference
+    private volatile PrivilegeConfiguration privilegeConfiguration;
 
-    private PrincipalConfiguration principalConfiguration;
-
-    private PrivilegeConfiguration privilegeConfiguration;
-
-    private TokenConfiguration tokenConfiguration;
+    @Reference
+    private volatile UserConfiguration userConfiguration;
+
+    @Reference(referenceInterface = PrincipalConfiguration.class,
+            name = "principalConfiguration",
+            bind = "bindPrincipalConfiguration",
+            unbind = "unbindPrincipalConfiguration",
+            policy = ReferencePolicy.DYNAMIC,
+            cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE)
+    private final CompositePrincipalConfiguration principalConfiguration = new CompositePrincipalConfiguration(this);
+
+    @Reference(referenceInterface = TokenConfiguration.class,
+            name = "tokenConfiguration",
+            bind = "bindTokenConfiguration",
+            unbind = "unbindTokenConfiguration",
+            policy = ReferencePolicy.DYNAMIC,
+            cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE)
+    private final CompositeTokenConfiguration tokenConfiguration = new CompositeTokenConfiguration(this);
+
+    private final WhiteboardAuthorizableNodeName authorizableNodeName = new WhiteboardAuthorizableNodeName();
+    private final WhiteboardAuthorizableActionProvider authorizableActionProvider = new WhiteboardAuthorizableActionProvider();
+    private final WhiteboardRestrictionProvider restrictionProvider = new WhiteboardRestrictionProvider();
+    private final WhiteboardUserAuthenticationFactory userAuthenticationFactory = new WhiteboardUserAuthenticationFactory(UserConfigurationImpl.getDefaultAuthenticationFactory());
 
     private ConfigurationParameters configuration;
 
     private Whiteboard whiteboard;
 
     /**
-     * Default constructor using an empty configuration and default
-     * implementations for the security configurations.
+     * Default constructor used in OSGi environments.
      */
     public SecurityProviderImpl() {
         this(ConfigurationParameters.EMPTY);
     }
 
     /**
-     * Create a new {@code SecurityProvider} instance with the given
-     * configuration parameters.
+     * Create a new {@code SecurityProvider} instance with the given configuration
+     * parameters.
      *
      * @param configuration security configuration
      */
     public SecurityProviderImpl(@Nonnull ConfigurationParameters configuration) {
-        this.configuration = checkNotNull(configuration);
-        this.authenticationConfiguration = new AuthenticationConfigurationImpl(this);
-        this.authorizationConfiguration = new AuthorizationConfigurationImpl(this);
-        this.userConfiguration = new UserConfigurationImpl(this);
-        this.principalConfiguration = new PrincipalConfigurationImpl(this);
-        this.privilegeConfiguration = new PrivilegeConfigurationImpl();
-        this.tokenConfiguration = new TokenConfigurationImpl(this);
-    }
-
-    public void setAuthenticationConfiguration(AuthenticationConfiguration authenticationConfiguration) {
-        this.authenticationConfiguration = checkNotNull(authenticationConfiguration);
-    }
-
-    public void setAuthorizationConfiguration(AuthorizationConfiguration authorizationConfiguration) {
-        this.authorizationConfiguration = authorizationConfiguration;
-    }
-
-    public void setUserConfiguration(UserConfiguration userConfiguration) {
-        this.userConfiguration = userConfiguration;
-    }
+        checkNotNull(configuration);
+        this.configuration = configuration;
 
-    public void setPrincipalConfiguration(PrincipalConfiguration principalConfiguration) {
-        this.principalConfiguration = principalConfiguration;
-    }
-
-    public void setPrivilegeConfiguration(PrivilegeConfiguration privilegeConfiguration) {
-        this.privilegeConfiguration = privilegeConfiguration;
-    }
+        authenticationConfiguration = new AuthenticationConfigurationImpl(this);
+        authorizationConfiguration = new AuthorizationConfigurationImpl(this);
+        userConfiguration = new UserConfigurationImpl(this);
+        privilegeConfiguration = new PrivilegeConfigurationImpl();
 
-    public void setTokenConfiguration(TokenConfiguration tokenConfiguration) {
-        this.tokenConfiguration = tokenConfiguration;
+        principalConfiguration.setDefaultConfig(new PrincipalConfigurationImpl(this));
+        tokenConfiguration.setDefaultConfig(new TokenConfigurationImpl(this));
     }
 
     @Override
@@ -122,9 +144,7 @@ public class SecurityProviderImpl implem
         if (name == null) {
             return configuration;
         }
-
         ConfigurationParameters params = configuration.getConfigValue(name, ConfigurationParameters.EMPTY);
-
         for (SecurityConfiguration sc : getConfigurations()) {
             if (sc != null && sc.getName().equals(name)) {
                 return ConfigurationParameters.of(params, sc.getParameters());
@@ -136,14 +156,14 @@ public class SecurityProviderImpl implem
     @Nonnull
     @Override
     public Iterable<? extends SecurityConfiguration> getConfigurations() {
-        return newHashSet(
-                authenticationConfiguration,
-                authorizationConfiguration,
-                userConfiguration,
-                principalConfiguration,
-                privilegeConfiguration,
-                tokenConfiguration
-        );
+        Set<SecurityConfiguration> scs = new HashSet<SecurityConfiguration>();
+        scs.add(authenticationConfiguration);
+        scs.add(authorizationConfiguration);
+        scs.add(userConfiguration);
+        scs.add(principalConfiguration);
+        scs.add(privilegeConfiguration);
+        scs.add(tokenConfiguration);
+        return scs;
     }
 
     @SuppressWarnings("unchecked")
@@ -167,4 +187,89 @@ public class SecurityProviderImpl implem
         }
     }
 
+    //----------------------------------------------------------------< SCR >---
+    @Activate
+    protected void activate(BundleContext context) {
+        whiteboard = new OsgiWhiteboard(context);
+        authorizableActionProvider.start(whiteboard);
+        authorizableNodeName.start(whiteboard);
+        restrictionProvider.start(whiteboard);
+        userAuthenticationFactory.start(whiteboard);
+
+        initializeConfigurations();
+    }
+
+    @Deactivate
+    protected void deactivate() {
+        authorizableActionProvider.stop();
+        authorizableNodeName.stop();
+        restrictionProvider.stop();
+        userAuthenticationFactory.stop();
+    }
+
+    @SuppressWarnings("UnusedDeclaration")
+    protected void bindPrincipalConfiguration(@Nonnull PrincipalConfiguration reference) {
+        principalConfiguration.addConfiguration(initConfiguration(reference));
+    }
+
+    @SuppressWarnings("UnusedDeclaration")
+    protected void unbindPrincipalConfiguration(@Nonnull PrincipalConfiguration reference) {
+        principalConfiguration.removeConfiguration(reference);
+    }
+
+    @SuppressWarnings("UnusedDeclaration")
+    protected void bindTokenConfiguration(@Nonnull TokenConfiguration reference) {
+        tokenConfiguration.addConfiguration(initConfiguration(reference));
+    }
+
+    @SuppressWarnings("UnusedDeclaration")
+    protected void unbindTokenConfiguration(@Nonnull TokenConfiguration reference) {
+        tokenConfiguration.removeConfiguration(reference);
+    }
+
+    @SuppressWarnings("UnusedDeclaration")
+    protected void bindAuthorizationConfiguration(@Nonnull AuthorizationConfiguration reference) {
+        authorizationConfiguration = initConfiguration(reference);
+        // TODO (OAK-1268): authorizationConfiguration.addConfiguration(initConfiguration(reference));
+    }
+
+    @SuppressWarnings("UnusedDeclaration")
+    protected void unbindAuthorizationConfiguration(@Nonnull AuthorizationConfiguration reference) {
+        authorizationConfiguration = new AuthorizationConfigurationImpl(this);
+       // TODO (OAK-1268): authorizationConfiguration.removeConfiguration(reference);
+    }
+
+    //------------------------------------------------------------< private >---
+    private void initializeConfigurations() {
+        initConfiguration(authorizationConfiguration, ConfigurationParameters.of(
+                AccessControlConstants.PARAM_RESTRICTION_PROVIDER, restrictionProvider)
+        );
+
+        Map<String, Object> userMap = ImmutableMap.<String,Object>of(
+                UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER, authorizableActionProvider,
+                UserConstants.PARAM_AUTHORIZABLE_NODE_NAME, authorizableNodeName,
+                UserConstants.PARAM_USER_AUTHENTICATION_FACTORY, userAuthenticationFactory);
+        initConfiguration(userConfiguration, ConfigurationParameters.of(userMap));
+
+        initConfiguration(authenticationConfiguration);
+        initConfiguration(privilegeConfiguration);
+    }
+
+    private <T extends SecurityConfiguration> T initConfiguration(@Nonnull T config) {
+        if (config instanceof ConfigurationBase) {
+            ConfigurationBase cfg = (ConfigurationBase) config;
+            cfg.setSecurityProvider(this);
+            cfg.setParameters(ConfigurationParameters.of(ConfigurationParameters.EMPTY, cfg.getParameters()));
+        }
+        return config;
+    }
+
+    private <T extends SecurityConfiguration> T initConfiguration(@Nonnull T config, @Nonnull ConfigurationParameters params) {
+        if (config instanceof ConfigurationBase) {
+            ConfigurationBase cfg = (ConfigurationBase) config;
+            cfg.setSecurityProvider(this);
+            cfg.setParameters(ConfigurationParameters.of(params, cfg.getParameters()));
+        }
+        return config;
+    }
 }

Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/InternalSecurityProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/InternalSecurityProvider.java?rev=1704479&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/InternalSecurityProvider.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/InternalSecurityProvider.java Tue Sep 22 08:32:10 2015
@@ -0,0 +1,170 @@
+/*
+ * 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.security.internal;
+
+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.token.TokenConfiguration;
+import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
+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.whiteboard.Whiteboard;
+import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardAware;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import static com.google.common.collect.Sets.newHashSet;
+
+class InternalSecurityProvider implements SecurityProvider, WhiteboardAware {
+
+    private AuthenticationConfiguration authenticationConfiguration;
+
+    private AuthorizationConfiguration authorizationConfiguration;
+
+    private UserConfiguration userConfiguration;
+
+    private PrivilegeConfiguration privilegeConfiguration;
+
+    private PrincipalConfiguration principalConfiguration;
+
+    private TokenConfiguration tokenConfiguration;
+
+    private Whiteboard whiteboard;
+
+    @Nonnull
+    @Override
+    public ConfigurationParameters getParameters(@Nullable String name) {
+        SecurityConfiguration securityConfiguration = getSecurityConfigurationByName(name);
+
+        if (securityConfiguration == null) {
+            return ConfigurationParameters.EMPTY;
+        }
+
+        return securityConfiguration.getParameters();
+    }
+
+    private SecurityConfiguration getSecurityConfigurationByName(String name) {
+        if (AuthenticationConfiguration.NAME.equals(name)) {
+            return authenticationConfiguration;
+        }
+
+        if (AuthorizationConfiguration.NAME.equals(name)) {
+            return authorizationConfiguration;
+        }
+
+        if (UserConfiguration.NAME.equals(name)) {
+            return userConfiguration;
+        }
+
+        if (PrivilegeConfiguration.NAME.equals(name)) {
+            return privilegeConfiguration;
+        }
+
+        if (PrincipalConfiguration.NAME.equals(name)) {
+            return principalConfiguration;
+        }
+
+        if (TokenConfiguration.NAME.equals(name)) {
+            return tokenConfiguration;
+        }
+
+        return null;
+    }
+
+    @Nonnull
+    @Override
+    public Iterable<? extends SecurityConfiguration> getConfigurations() {
+        return newHashSet(
+                authenticationConfiguration,
+                authorizationConfiguration,
+                userConfiguration,
+                privilegeConfiguration,
+                principalConfiguration,
+                tokenConfiguration
+        );
+    }
+
+    @Nonnull
+    @Override
+    @SuppressWarnings("unchecked")
+    public <T> T getConfiguration(@Nonnull Class<T> configurationClass) {
+        if (configurationClass == AuthenticationConfiguration.class) {
+            return (T) authenticationConfiguration;
+        }
+
+        if (configurationClass == AuthorizationConfiguration.class) {
+            return (T) authorizationConfiguration;
+        }
+
+        if (configurationClass == UserConfiguration.class) {
+            return (T) userConfiguration;
+        }
+
+        if (configurationClass == PrivilegeConfiguration.class) {
+            return (T) privilegeConfiguration;
+        }
+
+        if (configurationClass == PrincipalConfiguration.class) {
+            return (T) principalConfiguration;
+        }
+
+        if (configurationClass == TokenConfiguration.class) {
+            return (T) tokenConfiguration;
+        }
+
+        throw new IllegalArgumentException("Unsupported security configuration class " + configurationClass);
+    }
+
+    @Override
+    public void setWhiteboard(@Nonnull Whiteboard whiteboard) {
+        this.whiteboard = whiteboard;
+    }
+
+    @Override
+    public Whiteboard getWhiteboard() {
+        return whiteboard;
+    }
+
+    public void setAuthenticationConfiguration(AuthenticationConfiguration authenticationConfiguration) {
+        this.authenticationConfiguration = authenticationConfiguration;
+    }
+
+    public void setAuthorizationConfiguration(AuthorizationConfiguration authorizationConfiguration) {
+        this.authorizationConfiguration = authorizationConfiguration;
+    }
+
+    public void setUserConfiguration(UserConfiguration userConfiguration) {
+        this.userConfiguration = userConfiguration;
+    }
+
+    public void setPrivilegeConfiguration(PrivilegeConfiguration privilegeConfiguration) {
+        this.privilegeConfiguration = privilegeConfiguration;
+    }
+
+    public void setPrincipalConfiguration(PrincipalConfiguration principalConfiguration) {
+        this.principalConfiguration = principalConfiguration;
+    }
+
+    public void setTokenConfiguration(TokenConfiguration tokenConfiguration) {
+        this.tokenConfiguration = tokenConfiguration;
+    }
+
+}

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/InternalSecurityProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java?rev=1704479&r1=1704478&r2=1704479&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java Tue Sep 22 08:32:10 2015
@@ -29,7 +29,6 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.References;
 import org.apache.jackrabbit.oak.commons.PropertiesUtil;
 import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
-import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
 import org.apache.jackrabbit.oak.security.user.UserConfigurationImpl;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
@@ -60,6 +59,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
@@ -417,10 +418,14 @@ public class SecurityProviderRegistratio
 
         // Register the SecurityProvider.
 
+        Dictionary<String, Object> properties = new Hashtable<String, Object>();
+
+        properties.put("type", "default");
+
         ServiceRegistration registration = context.registerService(
                 SecurityProvider.class.getName(),
                 createSecurityProvider(context),
-                null
+                properties
         );
 
         synchronized (this) {
@@ -465,7 +470,7 @@ public class SecurityProviderRegistratio
     }
 
     private SecurityProvider createSecurityProvider(BundleContext context) {
-        SecurityProviderImpl securityProvider = new SecurityProviderImpl();
+        InternalSecurityProvider securityProvider = new InternalSecurityProvider();
 
         // Static, mandatory references
 
@@ -491,7 +496,7 @@ public class SecurityProviderRegistratio
 
             @Override
             protected List<PrincipalConfiguration> getConfigurations() {
-                ArrayList<PrincipalConfiguration> configurations = newArrayList(newArrayList(principalConfigurations));
+                ArrayList<PrincipalConfiguration> configurations = newArrayList(principalConfigurations);
 
                 for (PrincipalConfiguration configuration : configurations) {
                     initializeConfiguration(getSecurityProvider(), configuration);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/package-info.java?rev=1704479&r1=1704478&r2=1704479&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/package-info.java Tue Sep 22 08:32:10 2015
@@ -20,9 +20,8 @@
  *
  * See <a href="README.md">README.md</a> for more details.
  */
-@Version("2.0.0")
-@Export(optional = "provide:=true")
-package org.apache.jackrabbit.oak.security;
+@Version("1.0.1")
+@Export(optional = "provide:=true") package org.apache.jackrabbit.oak.security;
 
-import aQute.bnd.annotation.Version;
-import aQute.bnd.annotation.Export;
\ No newline at end of file
+import aQute.bnd.annotation.Export;
+import aQute.bnd.annotation.Version;
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java?rev=1704479&r1=1704478&r2=1704479&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java Tue Sep 22 08:32:10 2015
@@ -85,7 +85,7 @@ public class RepositoryManager {
     
     private boolean fastQueryResultSize;
 
-    @Reference
+    @Reference(target = "(type=default)")
     private SecurityProvider securityProvider;
 
     @Reference

Modified: jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/SecurityProviderRegistrationTest.groovy
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/SecurityProviderRegistrationTest.groovy?rev=1704479&r1=1704478&r2=1704479&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/SecurityProviderRegistrationTest.groovy (original)
+++ jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/SecurityProviderRegistrationTest.groovy Tue Sep 22 08:32:10 2015
@@ -160,7 +160,7 @@ class SecurityProviderRegistrationTest e
     }
 
     private ServiceReference<?>[] getSecurityProviderServiceReferences() {
-        return registry.getServiceReferences(SecurityProvider.class.name, null)
+        return registry.getServiceReferences(SecurityProvider.class.name, "(type=default)")
     }
 
     private void setRequiredServicePids(String... pids) {