Author: angela
Date: Tue Nov 12 16:17:24 2013
New Revision: 1541128

URL: http://svn.apache.org/r1541128
Log:
OAK-1105 : Osgi pluggability for the TokenProvider

Added:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.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/token/TokenProviderImpl.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/authentication/AuthenticationConfiguration.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/OpenAuthenticationConfiguration.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/token/TokenLoginModuleTest.java
    jackrabbit/oak/trunk/oak-doc/src/site/markdown/differences_authentication.md

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java?rev=1541128&r1=1541127&r2=1541128&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java
 Tue Nov 12 16:17:24 2013
@@ -16,15 +16,21 @@
  */
 package org.apache.jackrabbit.oak.osgi;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import com.google.common.collect.Maps;
+import org.apache.jackrabbit.oak.api.Root;
 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.token.CompositeTokenProvider;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
 import org.osgi.framework.ServiceReference;
 
 /**
@@ -32,12 +38,14 @@ import org.osgi.framework.ServiceReferen
  */
 public class OsgiSecurityProvider extends 
AbstractServiceTracker<SecurityConfiguration> implements SecurityProvider {
 
+    private CompositeTokenConfiguration tokenConfiguration = new 
CompositeTokenConfiguration();
     private Map<String, SecurityConfiguration> serviceMap = Maps.newHashMap();
     private ConfigurationParameters config;
 
     public OsgiSecurityProvider(@Nonnull ConfigurationParameters config) {
         super(SecurityConfiguration.class);
         this.config = config;
+        serviceMap.put(TokenConfiguration.NAME, tokenConfiguration);
     }
 
     //-------------------------------------------< ServiceTrackerCustomizer 
>---
@@ -46,8 +54,13 @@ public class OsgiSecurityProvider extend
         Object service = super.addingService(reference);
         if (service instanceof SecurityConfiguration) {
             SecurityConfiguration sc = (SecurityConfiguration) service;
-            synchronized (this) {
-                serviceMap.put(sc.getName(), sc);
+
+            if (sc instanceof TokenConfiguration) {
+                tokenConfiguration.services.add((TokenConfiguration) sc);
+            } else {
+                synchronized (this) {
+                    serviceMap.put(sc.getName(), sc);
+                }
             }
 
             if (service instanceof ConfigurationBase) {
@@ -61,8 +74,13 @@ public class OsgiSecurityProvider extend
     public void removedService(ServiceReference reference, Object service) {
         super.removedService(reference, service);
         if (service instanceof SecurityConfiguration) {
-            synchronized (this) {
-                serviceMap.remove(((SecurityConfiguration) service).getName());
+            SecurityConfiguration sc = (SecurityConfiguration) service;
+            if (sc instanceof TokenConfiguration) {
+                tokenConfiguration.services.remove(sc);
+            } else {
+                synchronized (this) {
+                    serviceMap.remove(((SecurityConfiguration) 
service).getName());
+                }
             }
         }
     }
@@ -100,4 +118,35 @@ public class OsgiSecurityProvider extend
         }
         throw new IllegalStateException("Unsupported configuration class " + 
configClass.getName());
     }
+
+    private final class CompositeTokenConfiguration extends ConfigurationBase 
implements TokenConfiguration {
+
+        private List<TokenConfiguration> services = new 
ArrayList<TokenConfiguration>();
+
+        @Nonnull
+        @Override
+        public TokenProvider getTokenProvider(Root root) {
+            List<TokenProvider> providers = new ArrayList<TokenProvider>();
+            for (TokenConfiguration tc : services) {
+                providers.add(tc.getTokenProvider(root));
+            }
+            return CompositeTokenProvider.newInstance(providers);
+        }
+
+        @Nonnull
+        @Override
+        public String getName() {
+            return TokenConfiguration.NAME;
+        }
+
+        @Nonnull
+        @Override
+        public ConfigurationParameters getParameters() {
+            ConfigurationParameters[] params = new 
ConfigurationParameters[services.size()];
+            for (int i = 0; i < services.size(); i++) {
+                params[i] = services.get(i).getParameters();
+            }
+            return ConfigurationParameters.of(params);
+        }
+    }
 }
\ 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=1541128&r1=1541127&r2=1541128&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 Nov 12 16:17:24 2013
@@ -21,6 +21,7 @@ import java.util.Set;
 import javax.annotation.Nonnull;
 
 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;
@@ -29,6 +30,7 @@ import org.apache.jackrabbit.oak.spi.sec
 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;
@@ -65,6 +67,7 @@ public class SecurityProviderImpl implem
         scs.add(getUserConfiguration());
         scs.add(getPrincipalConfiguration());
         scs.add(getPrivilegeConfiguration());
+        scs.add(getTokenConfiguration());
         return scs;
     }
 
@@ -81,6 +84,8 @@ public class SecurityProviderImpl implem
             return (T) getPrincipalConfiguration();
         } else if (PrivilegeConfiguration.class == configClass) {
             return (T) getPrivilegeConfiguration();
+        } else if (TokenConfiguration.class == configClass) {
+            return (T) getTokenConfiguration();
         } else {
             throw new IllegalArgumentException("Unsupported security 
configuration class " + configClass);
         }
@@ -113,4 +118,9 @@ public class SecurityProviderImpl implem
     private PrincipalConfiguration getPrincipalConfiguration() {
         return new PrincipalConfigurationImpl(this);
     }
+
+    @Nonnull
+    private TokenConfiguration getTokenConfiguration() {
+        return new TokenConfigurationImpl(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=1541128&r1=1541127&r2=1541128&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
 Tue Nov 12 16:17:24 2013
@@ -22,8 +22,6 @@ import javax.security.auth.login.Configu
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.api.Root;
-import 
org.apache.jackrabbit.oak.security.authentication.token.TokenProviderImpl;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
@@ -32,7 +30,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.authentication.ConfigurationUtil;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.LoginContextProvider;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
-import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -118,25 +115,4 @@ public class AuthenticationConfiguration
         }
         return new LoginContextProviderImpl(appName, loginConfig, 
contentRepository, getSecurityProvider());
     }
-
-    /**
-     * Returns a new instance of {@link TokenProvider}.
-     *
-     * <h4>Configuration Options</h4>
-     * <ul>
-     *     <li>{@link #PARAM_TOKEN_OPTIONS}: The configuration parameters for
-     *     the token provider which allows to change the default expiration 
time
-     *     and the length of the generated token.</li>
-     * </ul>
-     *
-     * @param root The target root.
-     * @return A new instance of {@link TokenProvider}.
-     */
-    @Nonnull
-    @Override
-    public TokenProvider getTokenProvider(Root root) {
-        ConfigurationParameters tokenOptions = 
getParameters().getConfigValue(PARAM_TOKEN_OPTIONS, 
ConfigurationParameters.EMPTY);
-        UserConfiguration uc = 
getSecurityProvider().getConfiguration(UserConfiguration.class);
-        return new TokenProviderImpl(root, tokenOptions, uc);
-    }
 }
\ No newline at end of file

Added: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java?rev=1541128&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
 Tue Nov 12 16:17:24 2013
@@ -0,0 +1,75 @@
+/*
+ * 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.authentication.token;
+
+import javax.annotation.Nonnull;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.jackrabbit.oak.api.Root;
+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.token.TokenConfiguration;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
+
+/**
+ * Default implementation for the {@code TokenConfiguration} interface.
+ */
+@Component()
+@Service({TokenConfiguration.class, SecurityConfiguration.class})
+public class TokenConfigurationImpl extends ConfigurationBase implements 
TokenConfiguration {
+
+    public TokenConfigurationImpl() {
+        super();
+    }
+
+    public TokenConfigurationImpl(SecurityProvider securityProvider) {
+        super(securityProvider);
+    }
+
+    //----------------------------------------------< SecurityConfiguration 
>---
+    @Nonnull
+    @Override
+    public String getName() {
+        return NAME;
+    }
+
+    //-------------------------------------------------< TokenConfiguration 
>---
+    /**
+     * Returns a new instance of {@link 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider}.
+     *
+     * <h4>Configuration Options</h4>
+     * <ul>
+     *     <li>{@link #PARAM_TOKEN_OPTIONS}: The configuration parameters for
+     *     the token provider which allows to change the default expiration 
time
+     *     and the length of the generated token.</li>
+     * </ul>
+     *
+     * @param root The target root.
+     * @return A new instance of {@link 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider}.
+     */
+    @Nonnull
+    @Override
+    public TokenProvider getTokenProvider(Root root) {
+        ConfigurationParameters tokenOptions = 
getParameters().getConfigValue(PARAM_TOKEN_OPTIONS, 
ConfigurationParameters.EMPTY);
+        UserConfiguration uc = 
getSecurityProvider().getConfiguration(UserConfiguration.class);
+        return new TokenProviderImpl(root, tokenOptions, uc);
+    }
+}
\ No newline at end of file

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/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=1541128&r1=1541127&r2=1541128&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
 Tue Nov 12 16:17:24 2013
@@ -32,11 +32,11 @@ import javax.security.auth.login.LoginEx
 import 
org.apache.jackrabbit.api.security.authentication.token.TokenCredentials;
 import org.apache.jackrabbit.oak.api.AuthInfo;
 import org.apache.jackrabbit.oak.api.Root;
-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.AuthInfoImpl;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.callback.TokenProviderCallback;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenInfo;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
 import org.slf4j.Logger;
@@ -215,8 +215,8 @@ public final class TokenLoginModule exte
         SecurityProvider securityProvider = getSecurityProvider();
         Root root = getRoot();
         if (root != null && securityProvider != null) {
-            AuthenticationConfiguration authConfig = 
securityProvider.getConfiguration(AuthenticationConfiguration.class);
-            provider = authConfig.getTokenProvider(root);
+            TokenConfiguration tokenConfig = 
securityProvider.getConfiguration(TokenConfiguration.class);
+            provider = tokenConfig.getTokenProvider(root);
         }
         if (provider == null && callbackHandler != null) {
             try {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java?rev=1541128&r1=1541127&r2=1541128&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
 Tue Nov 12 16:17:24 2013
@@ -89,7 +89,7 @@ import static org.apache.jackrabbit.oak.
  * interface will not validate the node type of the token node associated with
  * a given token.
  */
-public class TokenProviderImpl implements TokenProvider {
+class TokenProviderImpl implements TokenProvider {
 
     private static final Logger log = 
LoggerFactory.getLogger(TokenProviderImpl.class);
 
@@ -125,7 +125,7 @@ public class TokenProviderImpl implement
     private final UserManager userManager;
     private final IdentifierManager identifierManager;
 
-    public TokenProviderImpl(Root root, ConfigurationParameters options, 
UserConfiguration userConfiguration) {
+    TokenProviderImpl(Root root, ConfigurationParameters options, 
UserConfiguration userConfiguration) {
         this.root = root;
         this.options = options;
 

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=1541128&r1=1541127&r2=1541128&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
 Tue Nov 12 16:17:24 2013
@@ -24,9 +24,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import 
org.apache.jackrabbit.oak.spi.security.authentication.OpenAuthenticationConfiguration;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.OpenAuthorizationConfiguration;
-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;
 
 /**
  * OpenSecurityProvider... TODO: review if we really have the need for that 
once TODO in InitialContent is resolved
@@ -52,12 +49,6 @@ public class OpenSecurityProvider implem
             return (T) new OpenAuthenticationConfiguration();
         } else if (AuthorizationConfiguration.class == configClass) {
             return (T) new OpenAuthorizationConfiguration();
-        } else if (UserConfiguration.class == configClass) {
-            throw new UnsupportedOperationException();
-        } else if (PrincipalConfiguration.class == configClass) {
-            throw new UnsupportedOperationException();
-        } else if (PrivilegeConfiguration.class == configClass) {
-            throw new UnsupportedOperationException();
         } else {
             throw new IllegalArgumentException("Unsupported security 
configuration class " + configClass);
         }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java?rev=1541128&r1=1541127&r2=1541128&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java
 Tue Nov 12 16:17:24 2013
@@ -19,9 +19,7 @@ package org.apache.jackrabbit.oak.spi.se
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
-import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
 
 /**
  * Interface for the authentication setup.
@@ -30,13 +28,9 @@ public interface AuthenticationConfigura
 
     String NAME = "org.apache.jackrabbit.oak.authentication";
 
-    String PARAM_TOKEN_OPTIONS = 
"org.apache.jackrabbit.oak.authentication.token";
     String PARAM_APP_NAME = "org.apache.jackrabbit.oak.authentication.appName";
     String DEFAULT_APP_NAME = "jackrabbit.oak";
 
     @Nonnull
     LoginContextProvider getLoginContextProvider(ContentRepository 
contentRepository);
-
-    @Nonnull
-    TokenProvider getTokenProvider(Root root);
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/OpenAuthenticationConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/OpenAuthenticationConfiguration.java?rev=1541128&r1=1541127&r2=1541128&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/OpenAuthenticationConfiguration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/OpenAuthenticationConfiguration.java
 Tue Nov 12 16:17:24 2013
@@ -21,9 +21,7 @@ import javax.jcr.Credentials;
 import javax.security.auth.Subject;
 
 import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
-import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
 
 /**
  * This implementation of the authentication configuration provides login
@@ -61,10 +59,4 @@ public class OpenAuthenticationConfigura
             }
         };
     }
-
-    @Nonnull
-    @Override
-    public TokenProvider getTokenProvider(Root root) {
-        throw new UnsupportedOperationException();
-    }
 }

Added: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java?rev=1541128&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
 Tue Nov 12 16:17:24 2013
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.spi.security.authentication.token;
+
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
+
+/**
+ * TokenConfiguration... TODO
+ */
+public interface TokenConfiguration extends SecurityConfiguration {
+
+    String NAME = "org.apache.jackrabbit.oak.authentication.token";
+
+    String PARAM_TOKEN_OPTIONS = 
"org.apache.jackrabbit.oak.authentication.token";
+
+    @Nonnull
+    TokenProvider getTokenProvider(Root root);
+}
\ No newline at end of file

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=1541128&r1=1541127&r2=1541128&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
 Tue Nov 12 16:17:24 2013
@@ -30,8 +30,8 @@ import org.apache.jackrabbit.oak.api.Con
 import org.apache.jackrabbit.oak.api.Root;
 import 
org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule;
 import org.apache.jackrabbit.oak.spi.security.authentication.AuthInfoImpl;
-import 
org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.ImpersonationCredentials;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
 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;
@@ -221,8 +221,8 @@ public class TokenDefaultLoginModuleTest
     @Test
     public void testValidTokenCredentials() throws Exception {
         Root root = adminSession.getLatestRoot();
-        AuthenticationConfiguration authConfig = 
getSecurityProvider().getConfiguration(AuthenticationConfiguration.class);
-        TokenProvider tp = authConfig.getTokenProvider(root);
+        TokenConfiguration tc = 
getSecurityProvider().getConfiguration(TokenConfiguration.class);
+        TokenProvider tp = tc.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/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=1541128&r1=1541127&r2=1541128&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
 Tue Nov 12 16:17:24 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.spi.security.authentication.AuthenticationConfiguration;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
 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,8 +137,8 @@ public class TokenLoginModuleTest extend
     @Test
     public void testValidTokenCredentials() throws Exception {
         Root root = adminSession.getLatestRoot();
-        AuthenticationConfiguration authConfig = 
getSecurityProvider().getConfiguration(AuthenticationConfiguration.class);
-        TokenProvider tp = authConfig.getTokenProvider(root);
+        TokenConfiguration tokenConfig = 
getSecurityProvider().getConfiguration(TokenConfiguration.class);
+        TokenProvider tp = tokenConfig.getTokenProvider(root);
 
         SimpleCredentials sc = (SimpleCredentials) getAdminCredentials();
         TokenInfo info = tp.createToken(sc.getUserID(), Collections.<String, 
Object>emptyMap());

Modified: 
jackrabbit/oak/trunk/oak-doc/src/site/markdown/differences_authentication.md
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/differences_authentication.md?rev=1541128&r1=1541127&r2=1541128&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-doc/src/site/markdown/differences_authentication.md 
(original)
+++ 
jackrabbit/oak/trunk/oak-doc/src/site/markdown/differences_authentication.md 
Tue Nov 12 16:17:24 2013
@@ -176,6 +176,7 @@ org.apache.jackrabbit.oak.spi.security.a
 
 org.apache.jackrabbit.oak.spi.security.authentication.token:
 
+- `TokenConfiguration`: Interface to obtain a `TokenProvider` instance.
 - `TokenProvider`: Interface to manage login tokens.
 - `TokenInfo`: Information related to a login token and token validity.
 
@@ -188,11 +189,13 @@ org.apache.jackrabbit.oak.spi.security.a
 
 ##### AuthenticationConfiguration [9]:
 - `getLoginContextProvider` -> configuration of the login context
-- `getTokenProvider` -> configuration of the token management implementation
+
+##### TokenConfiguration [10]:
+- `getTokenProvider`
 
 ##### Utilities
 There also exists a utility class that allows to obtain different
-`javax.security.auth.login.Configuration` for the most common setup [10]:
+`javax.security.auth.login.Configuration` for the most common setup [11]:
 
 - `ConfigurationUtil#getDefaultConfiguration`: default OAK configuration 
supporting uid/pw login configures `LoginModuleImpl` only
 
@@ -225,4 +228,6 @@ There also exists a utility class that a
 
 [9] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AuthenticationConfiguration.java
 
-[10] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/ConfigurationUtil.java
+[10] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
+
+[11] 
http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/ConfigurationUtil.java


Reply via email to