summaryrefslogtreecommitdiff
path: root/qpid/java/broker/src/main
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-03-22 13:13:16 +0000
committerAlex Rudyy <orudyy@apache.org>2013-03-22 13:13:16 +0000
commit1be801114ec45d278e73dd71703f8ef5738bee2a (patch)
treeba826e5a238f81859f5c308a9cc9d776196598f7 /qpid/java/broker/src/main
parenta4ae83ad69b826bc62789052b398efc667af2409 (diff)
downloadqpid-python-1be801114ec45d278e73dd71703f8ef5738bee2a.tar.gz
QPID-4596: Restrict the creation of PasswordCredentialManagingAuthenticationProvider to one instance
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1459755 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker/src/main')
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java17
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java29
2 files changed, 17 insertions, 29 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
index fbdc2e42b5..fb4b41861d 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
@@ -27,8 +27,10 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProvider;
import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
import org.apache.qpid.server.plugin.QpidServiceLoader;
import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
@@ -68,6 +70,21 @@ public class AuthenticationProviderFactory
AuthenticationProviderAdapter<?> authenticationProvider;
if (manager instanceof PrincipalDatabaseAuthenticationManager)
{
+ // a temporary restriction to prevent creation of several instances
+ // of PlainPasswordFileAuthenticationProvider/Base64MD5PasswordFileAuthenticationProvider
+ // due to current limitation of JMX management which cannot cope
+ // with several user management MBeans as MBean type is used as a name.
+
+ // TODO: Remove this check after fixing of JMX management
+ for (AuthenticationProvider provider : broker.getAuthenticationProviders())
+ {
+ if (provider instanceof PasswordCredentialManagingAuthenticationProvider)
+ {
+ throw new IllegalConfigurationException("An authentication provider which can manage users alredy exists ["
+ + provider.getName() + "]. Only one instance is allowed.");
+ }
+ }
+
authenticationProvider = new PrincipalDatabaseAuthenticationManagerAdapter(id, broker,
(PrincipalDatabaseAuthenticationManager) manager, attributes, factory.getAttributeNames());
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
index 7e4282f4ee..73706904e5 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
@@ -531,35 +531,6 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat
AuthenticationProvider authenticationProvider = null;
synchronized (_authenticationProviders)
{
- String type = (String)attributes.get(AuthenticationProvider.TYPE);
- if (type == null)
- {
- throw new IllegalConfigurationException("Authentication provider type is not specified");
- }
-
- // a temporary restriction to prevent creation of several instances
- // of PlainPasswordFileAuthenticationProvider/Base64MD5PasswordFileAuthenticationProvider
- // due to current limitation of JMX management which cannot cope
- // with several user management MBeans as MBean type is used as a name.
-
- // TODO: Remove this check after fixing of JMX management
- if (type.equals(PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE)
- || type.equals(Base64MD5PasswordFileAuthenticationManagerFactory.PROVIDER_TYPE))
- {
-
- for (AuthenticationProvider provider : _authenticationProviders.values())
- {
- String providerType = (String) provider.getAttribute(AuthenticationProvider.TYPE);
- if (providerType.equals(PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE)
- || providerType.equals(Base64MD5PasswordFileAuthenticationManagerFactory.PROVIDER_TYPE))
- {
- throw new IllegalConfigurationException("An authentication provider which can manage users alredy exists ["
- + provider.getName() + "]. Only one instance is allowed.");
- }
- }
-
- }
-
authenticationProvider = _authenticationProviderFactory.create(UUID.randomUUID(), this, attributes);
addAuthenticationProvider(authenticationProvider);
}