You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2012/11/30 18:56:51 UTC

svn commit: r1415769 - in /qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src: main/java/org/apache/qpid/server/configuration/store/ main/java/org/apache/qpid/server/plugin/ main/java/org/apache/qpid/server/security/auth/manager/ main/reso...

Author: orudyy
Date: Fri Nov 30 17:56:48 2012
New Revision: 1415769

URL: http://svn.apache.org/viewvc?rev=1415769&view=rev
Log:
QPID-4390: Improve authentication provider configuration

Added:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java
      - copied, changed from r1415591, qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java
      - copied, changed from r1415591, qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactoryTest.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactoryTest.java
Removed:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthManagerFactoryTest.java
Modified:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/TestAuthenticationManagerFactory.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java Fri Nov 30 17:56:48 2012
@@ -27,8 +27,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
@@ -48,13 +46,21 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.GroupProvider;
-import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.Plugin;
+import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.Protocol;
 import org.apache.qpid.server.model.Transport;
 import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
 import org.apache.qpid.server.plugin.PluginFactory;
 import org.apache.qpid.server.plugin.QpidServiceLoader;
+import org.apache.qpid.server.security.auth.database.Base64MD5PasswordFilePrincipalDatabase;
+import org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase;
+import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.manager.Base64MD5PasswordFileAuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.manager.KerberosAuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory;
 import org.apache.qpid.server.security.group.FileGroupManagerFactory;
 
 public class XMLConfigurationEntryStore implements ConfigurationEntryStore
@@ -132,6 +138,15 @@ public class XMLConfigurationEntryStore 
         return rootEntry;
     }
 
+    private static final Map<String, String> authenticationManagerMap = new HashMap<String, String>();
+    static
+    {
+        authenticationManagerMap.put("anonymous-auth-manager", AnonymousAuthenticationManagerFactory.PROVIDER_TYPE);
+        authenticationManagerMap.put("external-auth-manager", ExternalAuthenticationManagerFactory.PROVIDER_TYPE);
+        authenticationManagerMap.put("kerberos-auth-manager", KerberosAuthenticationManagerFactory.PROVIDER_TYPE);
+        authenticationManagerMap.put("pd-auth-manager", null);
+    }
+
     private void createAuthenticationProviderConfig(Configuration configuration, Map<UUID, ConfigurationEntry> rootChildren)
     {
         HierarchicalConfiguration securityConfiguration = ConfigurationUtils.convertToHierarchical(
@@ -140,34 +155,35 @@ public class XMLConfigurationEntryStore 
         Collection<ConfigurationNode> nodes = securityConfiguration.getRootNode().getChildren();
         for (ConfigurationNode configurationNode : nodes)
         {
-            String name = configurationNode.getName();
+            String name = configurationNode.getName().trim();
             if (name.contains("auth-manager") && !"default-auth-manager".equals(name))
             {
                 Map<String, Object> attributes = new HashMap<String, Object>();
-                attributes.put(AuthenticationProvider.TYPE, name);
-                Configuration config = configuration.subset("security." + name);
-                Iterator<String> keysIterator = config.getKeys();
-                while (keysIterator.hasNext())
+                String type = authenticationManagerMap.get(name);
+                if (type == null)
                 {
-                    String key = keysIterator.next();
-                    if (!"".equals(key))
+                    if (name.equals("pd-auth-manager"))
                     {
-                        List<Object> object = configuration.getList("security." + name + "." + key);
-                        int size = object.size();
-                        if (size == 0)
+                        Configuration config = configuration.subset("security." + name);
+                        String pdClass = config.getString("principal-database.class");
+                        if (pdClass.equals(PlainPasswordFilePrincipalDatabase.class.getName()))
                         {
-                            attributes.put(key, null);
+                            type = PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE;
                         }
-                        else if (size == 1)
+                        else if (pdClass.equals(Base64MD5PasswordFilePrincipalDatabase.class.getName()))
                         {
-                            attributes.put(key, object.get(0));
-                        }
-                        else
-                        {
-                            attributes.put(key, object);
+                            type = Base64MD5PasswordFileAuthenticationManagerFactory.PROVIDER_TYPE;
                         }
+                        String path = config.getString("principal-database.attributes.attribute.value");
+                        attributes.put(PlainPasswordFileAuthenticationManagerFactory.ATTRIBUTE_PATH, path);
+                    }
+                    else
+                    {
+                        type = name;
                     }
                 }
+
+                attributes.put(AuthenticationManagerFactory.ATTRIBUTE_TYPE, type);
                 ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(),
                         AuthenticationProvider.class.getSimpleName(), attributes, null, this);
                 rootChildren.put(entry.getId(), entry);

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java Fri Nov 30 17:56:48 2012
@@ -20,13 +20,12 @@ package org.apache.qpid.server.plugin;
 
 import java.util.Map;
 
-import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
 
 
 public interface AuthenticationManagerFactory
 {
-    public static final String TYPE =  AuthenticationProvider.TYPE;
+    public static final String ATTRIBUTE_TYPE =  "authenticationProviderType";
 
     AuthenticationManager createInstance(Map<String, Object> attributes);
 }

Added: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java?rev=1415769&view=auto
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java (added)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java Fri Nov 30 17:56:48 2012
@@ -0,0 +1,71 @@
+/*
+ * 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.qpid.server.security.auth.manager;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
+
+/**
+ * Factory for {@link PrincipalDatabaseAuthenticationManager} objects configured
+ * with either the Plain or Base64MD5 digest {@link PrincipalDatabase}
+ * implementation.
+ */
+public abstract class AbstractPrincipalDatabaseAuthManagerFactory implements AuthenticationManagerFactory
+{
+    public static final String ATTRIBUTE_PATH = "path";
+
+    private static final Logger LOGGER = Logger.getLogger(AbstractPrincipalDatabaseAuthManagerFactory.class);
+
+    @Override
+    public AuthenticationManager createInstance(Map<String, Object> attributes)
+    {
+        if (attributes == null || !getType().equals(attributes.get(ATTRIBUTE_TYPE)))
+        {
+            return null;
+        }
+
+        String passwordFile = (String) attributes.get(ATTRIBUTE_PATH);
+        if (passwordFile == null)
+        {
+            LOGGER.warn("Password file path must not be null");
+            return null;
+        }
+
+        PrincipalDatabase principalDatabase = createPrincipalDatabase();
+        try
+        {
+            principalDatabase.setPasswordFile(passwordFile);
+        }
+        catch (IOException e)
+        {
+            throw new RuntimeException(e.getMessage(), e);
+        }
+
+        return new PrincipalDatabaseAuthenticationManager(principalDatabase);
+    }
+
+    abstract String getType();
+
+    abstract PrincipalDatabase createPrincipalDatabase();
+}

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java Fri Nov 30 17:56:48 2012
@@ -25,11 +25,12 @@ import org.apache.qpid.server.plugin.Aut
 
 public class AnonymousAuthenticationManagerFactory implements AuthenticationManagerFactory
 {
+    public static final String PROVIDER_TYPE = AnonymousAuthenticationManager.class.getSimpleName();
 
     @Override
     public AuthenticationManager createInstance(Map<String, Object> attributes)
     {
-        if (attributes != null && "anonymous-auth-manager".equals(attributes.get(TYPE)))
+        if (attributes != null && PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE)))
         {
             return new AnonymousAuthenticationManager();
         }

Copied: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java (from r1415591, qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java)
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java?p2=qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java&p1=qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java&r1=1415591&r2=1415769&rev=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java Fri Nov 30 17:56:48 2012
@@ -1,4 +1,5 @@
 /*
+ *
  * 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
@@ -19,21 +20,23 @@
  */
 package org.apache.qpid.server.security.auth.manager;
 
-import java.util.Map;
-
-import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.database.Base64MD5PasswordFilePrincipalDatabase;
+import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
 
-public class AnonymousAuthenticationManagerFactory implements AuthenticationManagerFactory
+public class Base64MD5PasswordFileAuthenticationManagerFactory extends AbstractPrincipalDatabaseAuthManagerFactory
 {
+    public static final String PROVIDER_TYPE = "Base64MD5PasswordFileAuthenticationProvider";
+
+    @Override
+    String getType()
+    {
+        return PROVIDER_TYPE;
+    }
 
     @Override
-    public AuthenticationManager createInstance(Map<String, Object> attributes)
+    PrincipalDatabase createPrincipalDatabase()
     {
-        if (attributes != null && "anonymous-auth-manager".equals(attributes.get(TYPE)))
-        {
-            return new AnonymousAuthenticationManager();
-        }
-        return null;
+        return new Base64MD5PasswordFilePrincipalDatabase();
     }
 
 }

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java Fri Nov 30 17:56:48 2012
@@ -25,10 +25,12 @@ import org.apache.qpid.server.plugin.Aut
 
 public class ExternalAuthenticationManagerFactory implements AuthenticationManagerFactory
 {
+    public static final String PROVIDER_TYPE = ExternalAuthenticationManager.class.getSimpleName();
+
     @Override
     public AuthenticationManager createInstance(Map<String, Object> attributes)
     {
-        if (attributes != null && "external-auth-manager".equals(attributes.get(TYPE)))
+        if (attributes != null && PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE)))
         {
             return new ExternalAuthenticationManager();
         }

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java Fri Nov 30 17:56:48 2012
@@ -25,11 +25,12 @@ import org.apache.qpid.server.plugin.Aut
 
 public class KerberosAuthenticationManagerFactory implements AuthenticationManagerFactory
 {
+    public static final String PROVIDER_TYPE = KerberosAuthenticationManager.class.getSimpleName();
 
     @Override
     public AuthenticationManager createInstance(Map<String, Object> attributes)
     {
-        if (attributes != null && "kerberos-auth-manager".equals(attributes.get(TYPE)))
+        if (attributes != null && PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE)))
         {
             return new KerberosAuthenticationManager();
         }

Copied: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java (from r1415591, qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java)
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java?p2=qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java&p1=qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java&r1=1415591&r2=1415769&rev=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java Fri Nov 30 17:56:48 2012
@@ -1,4 +1,5 @@
 /*
+ *
  * 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
@@ -19,21 +20,23 @@
  */
 package org.apache.qpid.server.security.auth.manager;
 
-import java.util.Map;
-
-import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase;
+import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
 
-public class AnonymousAuthenticationManagerFactory implements AuthenticationManagerFactory
+public class PlainPasswordFileAuthenticationManagerFactory extends AbstractPrincipalDatabaseAuthManagerFactory
 {
+    public static final String PROVIDER_TYPE = "PlainPasswordFileAuthenticationProvider";
+
+    @Override
+    String getType()
+    {
+        return PROVIDER_TYPE;
+    }
 
     @Override
-    public AuthenticationManager createInstance(Map<String, Object> attributes)
+    PrincipalDatabase createPrincipalDatabase()
     {
-        if (attributes != null && "anonymous-auth-manager".equals(attributes.get(TYPE)))
-        {
-            return new AnonymousAuthenticationManager();
-        }
-        return null;
+        return new PlainPasswordFilePrincipalDatabase();
     }
 
 }

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java Fri Nov 30 17:56:48 2012
@@ -50,8 +50,6 @@ import java.util.TreeMap;
  */
 public class PrincipalDatabaseAuthenticationManager implements AuthenticationManager
 {
-    public static final String PD_CLASS = "pd.class";
-    public static final String PD_PASSWORD_FILE = "pd.passwordFile";
 
     private static final Logger _logger = Logger.getLogger(PrincipalDatabaseAuthenticationManager.class);
 

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java Fri Nov 30 17:56:48 2012
@@ -25,30 +25,38 @@ import org.apache.qpid.server.plugin.Aut
 
 public class SimpleLDAPAuthenticationManagerFactory implements AuthenticationManagerFactory
 {
-
     private static final String DEFAULT_LDAP_CONTEXT_FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";
 
+    public static final String PROVIDER_TYPE = SimpleLDAPAuthenticationManager.class.getSimpleName();
+
+    public static final String ATTRIBUTE_LDAP_CONTEXT_FACTORY = "ldapContextFactory";
+    public static final String ATTRIBUTE_SEARCH_FILTER = "searchFilter";
+    public static final String ATTRIBUTE_SEARCH_CONTEXT = "searchContext";
+    public static final String ATTRIBUTE_PROVIDER_AUTH_URL = "providerAuthUrl";
+    public static final String ATTRIBUTE_PROVIDER_SEARCH_URL = "providerSearchUrl";
+    public static final String ATTRIBUTE_PROVIDER_URL = "providerUrl";
+
     @Override
     public AuthenticationManager createInstance(Map<String, Object> attributes)
     {
-        if (attributes == null || !"simple-ldap-auth-manager".equals(attributes.get(TYPE)))
+        if (attributes == null || !PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE)))
         {
             return null;
         }
-        String providerUrl = (String) attributes.get("provider-url");
-        String providerSearchUrl = (String) attributes.get("provider-search-url");
+        String providerUrl = (String) attributes.get(ATTRIBUTE_PROVIDER_URL);
+        String providerSearchUrl = (String) attributes.get(ATTRIBUTE_PROVIDER_SEARCH_URL);
         if (providerSearchUrl == null)
         {
             providerSearchUrl = providerUrl;
         }
-        String providerAuthUrl = (String) attributes.get("provider-auth-url");
+        String providerAuthUrl = (String) attributes.get(ATTRIBUTE_PROVIDER_AUTH_URL);
         if (providerAuthUrl == null)
         {
             providerAuthUrl = providerUrl;
         }
-        String searchContext = (String) attributes.get("search-context");
-        String searchFilter = (String) attributes.get("search-filter");
-        String ldapContextFactory = (String) attributes.get("ldap-context-factory");
+        String searchContext = (String) attributes.get(ATTRIBUTE_SEARCH_CONTEXT);
+        String searchFilter = (String) attributes.get(ATTRIBUTE_SEARCH_FILTER);
+        String ldapContextFactory = (String) attributes.get(ATTRIBUTE_LDAP_CONTEXT_FACTORY);
         if (ldapContextFactory == null)
         {
             ldapContextFactory = DEFAULT_LDAP_CONTEXT_FACTORY;

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory Fri Nov 30 17:56:48 2012
@@ -1,5 +1,6 @@
 org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory
+org.apache.qpid.server.security.auth.manager.Base64MD5PasswordFileAuthenticationManagerFactory
 org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManagerFactory
 org.apache.qpid.server.security.auth.manager.KerberosAuthenticationManagerFactory
-org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthManagerFactory
+org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory
 org.apache.qpid.server.security.auth.manager.SimpleLDAPAuthenticationManagerFactory

Added: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactoryTest.java?rev=1415769&view=auto
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactoryTest.java (added)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactoryTest.java Fri Nov 30 17:56:48 2012
@@ -0,0 +1,111 @@
+/*
+ * 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.qpid.server.security.auth.manager;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.database.Base64MD5PasswordFilePrincipalDatabase;
+
+public class Base64MD5PasswordFileAuthenticationManagerFactoryTest extends  TestCase
+{
+    AuthenticationManagerFactory _factory = new Base64MD5PasswordFileAuthenticationManagerFactory();
+    private Map<String, Object> _configuration = new HashMap<String, Object>();
+    private File _emptyPasswordFile;
+
+    @Override
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        _emptyPasswordFile = File.createTempFile(getName(), "passwd");
+        _emptyPasswordFile.deleteOnExit();
+    }
+
+    public void testBase64MD5InstanceCreated() throws Exception
+    {
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_TYPE, Base64MD5PasswordFileAuthenticationManagerFactory.PROVIDER_TYPE);
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_PATH, _emptyPasswordFile.getAbsolutePath());
+
+        AuthenticationManager manager = _factory.createInstance(_configuration);
+        assertNotNull(manager);
+        assertTrue(manager instanceof PrincipalDatabaseAuthenticationManager);
+        assertTrue(((PrincipalDatabaseAuthenticationManager)manager).getPrincipalDatabase() instanceof Base64MD5PasswordFilePrincipalDatabase);
+    }
+
+    public void testPasswordFileNotFound() throws Exception
+    {
+        //delete the file
+        _emptyPasswordFile.delete();
+
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_TYPE, Base64MD5PasswordFileAuthenticationManagerFactory.PROVIDER_TYPE);
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_PATH, _emptyPasswordFile.getAbsolutePath());
+
+        try
+        {
+            _factory.createInstance(_configuration);
+        }
+        catch (RuntimeException re)
+        {
+            assertTrue(re.getCause() instanceof FileNotFoundException);
+        }
+    }
+
+    public void testReturnsNullWhenNoConfig() throws Exception
+    {
+        AuthenticationManager manager = _factory.createInstance(_configuration);
+        assertNull(manager);
+    }
+
+    public void testReturnsNullWhenConfigForOtherAuthManagerType() throws Exception
+    {
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_TYPE, "other-auth-manager");
+        AuthenticationManager manager = _factory.createInstance(_configuration);
+        assertNull(manager);
+    }
+
+    public void testReturnsNullWhenConfigForPlainPDImplementationNoPasswordFileValueSpecified() throws Exception
+    {
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_TYPE, Base64MD5PasswordFileAuthenticationManagerFactory.PROVIDER_TYPE);
+
+        AuthenticationManager manager = _factory.createInstance(_configuration);
+        assertNull(manager);
+    }
+
+    @Override
+    protected void tearDown() throws Exception
+    {
+        try
+        {
+            if (_emptyPasswordFile == null && _emptyPasswordFile.exists())
+            {
+                _emptyPasswordFile.delete();
+            }
+        }
+        finally
+        {
+            super.tearDown();
+        }
+    }
+}
\ No newline at end of file

Added: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactoryTest.java?rev=1415769&view=auto
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactoryTest.java (added)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactoryTest.java Fri Nov 30 17:56:48 2012
@@ -0,0 +1,111 @@
+/*
+ * 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.qpid.server.security.auth.manager;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase;
+
+public class PlainPasswordFileAuthenticationManagerFactoryTest extends  TestCase
+{
+    AuthenticationManagerFactory _factory = new PlainPasswordFileAuthenticationManagerFactory();
+    private Map<String, Object> _configuration = new HashMap<String, Object>();
+    private File _emptyPasswordFile;
+
+    @Override
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        _emptyPasswordFile = File.createTempFile(getName(), "passwd");
+        _emptyPasswordFile.deleteOnExit();
+    }
+
+    public void testPlainInstanceCreated() throws Exception
+    {
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_TYPE, PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE);
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_PATH, _emptyPasswordFile.getAbsolutePath());
+
+        AuthenticationManager manager = _factory.createInstance(_configuration);
+        assertNotNull(manager);
+        assertTrue(manager instanceof PrincipalDatabaseAuthenticationManager);
+        assertTrue(((PrincipalDatabaseAuthenticationManager)manager).getPrincipalDatabase() instanceof PlainPasswordFilePrincipalDatabase);
+    }
+
+    public void testPasswordFileNotFound() throws Exception
+    {
+        //delete the file
+        _emptyPasswordFile.delete();
+
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_TYPE, PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE);
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_PATH, _emptyPasswordFile.getAbsolutePath());
+
+        try
+        {
+            _factory.createInstance(_configuration);
+        }
+        catch (RuntimeException re)
+        {
+            assertTrue(re.getCause() instanceof FileNotFoundException);
+        }
+    }
+
+    public void testReturnsNullWhenNoConfig() throws Exception
+    {
+        AuthenticationManager manager = _factory.createInstance(_configuration);
+        assertNull(manager);
+    }
+
+    public void testReturnsNullWhenConfigForOtherAuthManagerType() throws Exception
+    {
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_TYPE, "other-auth-manager");
+        AuthenticationManager manager = _factory.createInstance(_configuration);
+        assertNull(manager);
+    }
+
+    public void testReturnsNullWhenConfigForPlainPDImplementationNoPasswordFileValueSpecified() throws Exception
+    {
+        _configuration.put(AbstractPrincipalDatabaseAuthManagerFactory.ATTRIBUTE_TYPE, PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE);
+
+        AuthenticationManager manager = _factory.createInstance(_configuration);
+        assertNull(manager);
+    }
+
+    @Override
+    protected void tearDown() throws Exception
+    {
+        try
+        {
+            if (_emptyPasswordFile == null && _emptyPasswordFile.exists())
+            {
+                _emptyPasswordFile.delete();
+            }
+        }
+        finally
+        {
+            super.tearDown();
+        }
+    }
+}

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java Fri Nov 30 17:56:48 2012
@@ -32,9 +32,9 @@ public class SimpleLDAPAuthenticationMan
 
     public void testInstanceCreated() throws Exception
     {
-        _configuration.put(SimpleLDAPAuthenticationManagerFactory.TYPE, "simple-ldap-auth-manager");
-        _configuration.put("provider-url", "ldaps://example.com:636/");
-        _configuration.put("search-context", "dc=example");
+        _configuration.put(SimpleLDAPAuthenticationManagerFactory.ATTRIBUTE_TYPE, SimpleLDAPAuthenticationManagerFactory.PROVIDER_TYPE);
+        _configuration.put("providerUrl", "ldaps://example.com:636/");
+        _configuration.put("searchContext", "dc=example");
 
         AuthenticationManager manager = _factory.createInstance(_configuration);
         assertNotNull(manager);

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/TestAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/TestAuthenticationManagerFactory.java?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/TestAuthenticationManagerFactory.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/TestAuthenticationManagerFactory.java Fri Nov 30 17:56:48 2012
@@ -34,7 +34,7 @@ public class TestAuthenticationManagerFa
     @Override
     public AuthenticationManager createInstance(Map<String, Object> attributes)
     {
-        if (TEST_AUTH_MANAGER_MARKER.equals(attributes.get(TYPE)))
+        if (TEST_AUTH_MANAGER_MARKER.equals(attributes.get(ATTRIBUTE_TYPE)))
         {
             final Properties users = new Properties();
             users.put("guest","guest");

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory?rev=1415769&r1=1415768&r2=1415769&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.AuthenticationManagerFactory Fri Nov 30 17:56:48 2012
@@ -1,6 +1 @@
-org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory
-org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManagerFactory
-org.apache.qpid.server.security.auth.manager.KerberosAuthenticationManagerFactory
-org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthManagerFactory
-org.apache.qpid.server.security.auth.manager.SimpleLDAPAuthenticationManagerFactory
 org.apache.qpid.server.security.auth.manager.TestAuthenticationManagerFactory



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org