summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2015-04-10 09:57:39 +0000
committerKeith Wall <kwall@apache.org>2015-04-10 09:57:39 +0000
commit60c56cbf7bf8afd5dc577480853e7214cb60b3e2 (patch)
tree472e786d636fd51ae12ea0061596ec7e0b64d811 /qpid/java/broker-core
parentb187311574bbf087f376256d237173b38a84fdbc (diff)
downloadqpid-python-60c56cbf7bf8afd5dc577480853e7214cb60b3e2.tar.gz
QPID-6485: [Java Broker] Remove superfluous find/get methods from the Broker configured object
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1672602 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-core')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java20
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java38
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java31
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java119
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java4
6 files changed, 17 insertions, 197 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
index 2a6c87c140..2427e96cd4 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
@@ -20,15 +20,12 @@
*/
package org.apache.qpid.server.model;
-import java.net.SocketAddress;
import java.util.Collection;
-import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.logging.EventLoggerProvider;
import org.apache.qpid.server.logging.LogRecorder;
import org.apache.qpid.server.security.SecurityManager;
-import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.server.stats.StatisticsGatherer;
@ManagedObject( defaultType = "broker" )
@@ -176,31 +173,14 @@ public interface Broker<X extends Broker<X>> extends ConfiguredObject<X>, EventL
*/
LogRecorder getLogRecorder();
- AuthenticationProvider<?> findAuthenticationProviderByName(String authenticationProviderName);
-
VirtualHost<?,?,?> findVirtualHostByName(String name);
- KeyStore<?> findKeyStoreByName(String name);
-
- TrustStore<?> findTrustStoreByName(String name);
-
- /**
- * Get the SubjectCreator for the given socket address.
- * TODO: move the authentication related functionality into host aliases and AuthenticationProviders
- *
- * @param localAddress The (listening) socket address for which the AuthenticationManager is required
- * @param secure
- */
- SubjectCreator getSubjectCreator(SocketAddress localAddress, final boolean secure);
-
Collection<KeyStore<?>> getKeyStores();
Collection<TrustStore<?>> getTrustStores();
boolean isManagementMode();
- AuthenticationProvider<?> getAuthenticationProvider(SocketAddress localAddress);
-
EventLogger getEventLogger();
void setEventLogger(EventLogger eventLogger);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
index 3b3ae59a1a..09e911d627 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
@@ -20,8 +20,6 @@
*/
package org.apache.qpid.server.model.adapter;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
import java.security.AccessControlException;
import java.security.PrivilegedAction;
import java.util.Collection;
@@ -50,11 +48,9 @@ import org.apache.qpid.server.logging.LogRecorder;
import org.apache.qpid.server.logging.messages.BrokerMessages;
import org.apache.qpid.server.logging.messages.VirtualHostMessages;
import org.apache.qpid.server.model.*;
-import org.apache.qpid.server.model.port.AbstractPortWithAuthProvider;
import org.apache.qpid.server.plugin.ConfigurationSecretEncrypterFactory;
import org.apache.qpid.server.plugin.PluggableFactoryLoader;
import org.apache.qpid.server.security.SecurityManager;
-import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.server.security.auth.manager.SimpleAuthenticationManager;
import org.apache.qpid.server.stats.StatisticsCounter;
import org.apache.qpid.server.stats.StatisticsGatherer;
@@ -432,7 +428,7 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple
@Override
public synchronized void assignTargetSizes()
{
- long totalTarget = getContextValue(Long.class,BROKER_FLOW_TO_DISK_THRESHOLD);
+ long totalTarget = getContextValue(Long.class, BROKER_FLOW_TO_DISK_THRESHOLD);
long totalSize = 0l;
Collection<VirtualHostNode<?>> vhns = getVirtualHostNodes();
Map<VirtualHost<?,?,?>,Long> vhs = new HashMap<>();
@@ -549,7 +545,7 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple
@Override
public <C extends ConfiguredObject> C addChild(final Class<C> childClass, final Map<String, Object> attributes, final ConfiguredObject... otherParents)
{
- return runTask( new Task<C>()
+ return runTask(new Task<C>()
{
@Override
public C execute()
@@ -864,36 +860,6 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple
}
@Override
- public SubjectCreator getSubjectCreator(SocketAddress localAddress, final boolean secure)
- {
- AuthenticationProvider provider = getAuthenticationProvider(localAddress);
-
- if(provider == null)
- {
- throw new IllegalConfigurationException("Unable to determine authentication provider for address: " + localAddress);
- }
-
- return provider.getSubjectCreator(secure);
- }
-
- @Override
- public AuthenticationProvider<?> getAuthenticationProvider(SocketAddress localAddress)
- {
- InetSocketAddress inetSocketAddress = (InetSocketAddress)localAddress;
- AuthenticationProvider provider = null;
- Collection<Port<?>> ports = getPorts();
- for (Port<?> p : ports)
- {
- if (p instanceof AbstractPortWithAuthProvider && inetSocketAddress.getPort() == p.getPort())
- {
- provider = ((AbstractPortWithAuthProvider<?>) p).getAuthenticationProvider();
- break;
- }
- }
- return provider;
- }
-
- @Override
public Collection<KeyStore<?>> getKeyStores()
{
Collection children = getChildren(KeyStore.class);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java
index 5b07ac9932..d20cc3294b 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java
@@ -20,7 +20,6 @@
*/
package org.apache.qpid.server.security.auth.jmx;
-import java.net.SocketAddress;
import java.rmi.server.RemoteServer;
import java.rmi.server.ServerNotActiveException;
import java.security.PrivilegedAction;
@@ -28,14 +27,13 @@ import java.security.PrivilegedAction;
import javax.management.remote.JMXAuthenticator;
import javax.security.auth.Subject;
-import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
import org.apache.qpid.server.security.auth.SubjectAuthenticationResult;
public class JMXPasswordAuthenticator implements JMXAuthenticator
{
- static final String UNABLE_TO_LOOKUP = "The broker was unable to lookup the user details";
static final String SHOULD_BE_STRING_ARRAY = "User details should be String[]";
static final String SHOULD_HAVE_2_ELEMENTS = "User details should have 2 elements, username, password";
static final String SHOULD_BE_NON_NULL = "Supplied username and password should be non-null";
@@ -43,15 +41,14 @@ public class JMXPasswordAuthenticator implements JMXAuthenticator
static final String CREDENTIALS_REQUIRED = "User details are required. " +
"Please ensure you are using an up to date management console to connect.";
- private final Broker _broker;
- private final SocketAddress _address;
- private final boolean _secure;
+ private final SubjectCreator _subjectCreator;
+ private final SecurityManager _securityManager;
- public JMXPasswordAuthenticator(Broker broker, SocketAddress address, final boolean secure)
+
+ public JMXPasswordAuthenticator(SubjectCreator subjectCreator, SecurityManager securityManager)
{
- _broker = broker;
- _address = address;
- _secure = secure;
+ _subjectCreator = subjectCreator;
+ _securityManager = securityManager;
}
public Subject authenticate(Object credentials) throws SecurityException
@@ -59,8 +56,8 @@ public class JMXPasswordAuthenticator implements JMXAuthenticator
validateCredentials(credentials);
final String[] userCredentials = (String[]) credentials;
- final String username = (String) userCredentials[0];
- final String password = (String) userCredentials[1];
+ final String username = userCredentials[0];
+ final String password = userCredentials[1];
final Subject authenticatedSubject = doAuthentication(username, password);
doManagementAuthorisation(authenticatedSubject);
@@ -97,13 +94,7 @@ public class JMXPasswordAuthenticator implements JMXAuthenticator
throw new SecurityException(SHOULD_BE_NON_NULL);
}
- SubjectCreator subjectCreator = _broker.getSubjectCreator(_address, _secure);
- if (subjectCreator == null)
- {
- throw new SecurityException("Can't get subject creator for " + _address);
- }
-
- final SubjectAuthenticationResult result = subjectCreator.authenticate(username, password);
+ final SubjectAuthenticationResult result = _subjectCreator.authenticate(username, password);
if (AuthenticationStatus.ERROR.equals(result.getStatus()))
{
@@ -143,7 +134,7 @@ public class JMXPasswordAuthenticator implements JMXAuthenticator
@Override
public Object run()
{
- _broker.getSecurityManager().accessManagement();
+ _securityManager.accessManagement();
return null;
}
});
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
index 5dbd082152..ee22520b58 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
@@ -392,8 +392,6 @@ public class PortFactoryTest extends QpidTestCase
attributes.put(Port.PROTOCOLS, Collections.singleton(Protocol.RMI));
_attributes.put(Port.KEY_STORE, keyStoreName);
- when(_broker.findKeyStoreByName(keyStoreName)).thenReturn(_keyStore);
-
try
{
_port = _factory.create(Port.class, attributes, _broker);
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java
index bb02070748..dd37960b65 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java
@@ -20,24 +20,18 @@
*/
package org.apache.qpid.server.security.auth.jmx;
-import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
import java.security.AccessControlException;
import java.security.Principal;
-import java.util.regex.Pattern;
import javax.security.auth.Subject;
import junit.framework.TestCase;
-import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.server.security.auth.AuthenticationResult;
import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
@@ -54,7 +48,6 @@ public class JMXPasswordAuthenticatorTest extends TestCase
private static final String USERNAME = "guest";
private static final String PASSWORD = "password";
- private final Broker _broker = mock(Broker.class);
private final SecurityManager _securityManager = mock(SecurityManager.class);
private final Subject _loginSubject = new Subject();
private final String[] _credentials = new String[] {USERNAME, PASSWORD};
@@ -64,18 +57,12 @@ public class JMXPasswordAuthenticatorTest extends TestCase
private SubjectCreator _usernamePasswordOkaySubjectCreator = createMockSubjectCreator(true, null);
private SubjectCreator _badPasswordSubjectCreator = createMockSubjectCreator(false, null);
- protected void setUp() throws Exception
- {
- when(_broker.getSecurityManager()).thenReturn(_securityManager);
- _rmipa = new JMXPasswordAuthenticator(_broker, new InetSocketAddress(8999), false);
- }
-
/**
* Tests a successful authentication. Ensures that the expected subject is returned.
*/
public void testAuthenticationSuccess()
{
- when(_broker.getSubjectCreator(any(SocketAddress.class), anyBoolean())).thenReturn(_usernamePasswordOkaySubjectCreator);
+ _rmipa = new JMXPasswordAuthenticator(_usernamePasswordOkaySubjectCreator, _securityManager);
Subject newSubject = _rmipa.authenticate(_credentials);
assertSame("Subject must be unchanged", _loginSubject, newSubject);
@@ -86,7 +73,7 @@ public class JMXPasswordAuthenticatorTest extends TestCase
*/
public void testUsernameOrPasswordInvalid()
{
- when(_broker.getSubjectCreator(any(SocketAddress.class), anyBoolean())).thenReturn(_badPasswordSubjectCreator);
+ _rmipa = new JMXPasswordAuthenticator(_badPasswordSubjectCreator, _securityManager);
try
{
@@ -102,7 +89,7 @@ public class JMXPasswordAuthenticatorTest extends TestCase
public void testAuthorisationFailure()
{
- when(_broker.getSubjectCreator(any(SocketAddress.class), anyBoolean())).thenReturn(_usernamePasswordOkaySubjectCreator);
+ _rmipa = new JMXPasswordAuthenticator(_usernamePasswordOkaySubjectCreator, _securityManager);
doThrow(new AccessControlException(USER_NOT_AUTHORISED_FOR_MANAGEMENT)).when(_securityManager).accessManagement();
try
@@ -121,7 +108,7 @@ public class JMXPasswordAuthenticatorTest extends TestCase
{
final Exception mockAuthException = new Exception("Mock Auth system failure");
SubjectCreator subjectCreator = createMockSubjectCreator(false, mockAuthException);
- when(_broker.getSubjectCreator(any(SocketAddress.class), anyBoolean())).thenReturn(subjectCreator);
+ _rmipa = new JMXPasswordAuthenticator(subjectCreator, _securityManager);
try
{
@@ -134,104 +121,6 @@ public class JMXPasswordAuthenticatorTest extends TestCase
}
}
- /**
- * Tests case where authentication manager is not set.
- */
- public void testNullSubjectCreator() throws Exception
- {
- when(_broker.getSubjectCreator(any(SocketAddress.class), anyBoolean())).thenReturn(null);
-
- try
- {
- _rmipa.authenticate(_credentials);
- fail("SecurityException expected due to lack of authentication manager");
- }
- catch (SecurityException se)
- {
- assertTrue("Unexpected exception message", Pattern.matches("Can't get subject creator for .*:8999", se.getMessage()));
- }
- }
-
- /**
- * Tests case where arguments are non-Strings..
- */
- public void testWithNonStringArrayArgument()
- {
- // Test handling of non-string credential's
- final Object[] objCredentials = new Object[]{USERNAME, PASSWORD};
- try
- {
- _rmipa.authenticate(objCredentials);
- fail("SecurityException expected due to non string[] credentials");
- }
- catch (SecurityException se)
- {
- assertEquals("Unexpected exception message",
- JMXPasswordAuthenticator.SHOULD_BE_STRING_ARRAY, se.getMessage());
- }
- }
-
- /**
- * Tests case where there are too many, too few or null arguments.
- */
- public void testWithIllegalNumberOfArguments()
- {
- String[] credentials;
-
- // Test handling of incorrect number of credentials
- try
- {
- credentials = new String[]{USERNAME, PASSWORD, PASSWORD};
- _rmipa.authenticate(credentials);
- fail("SecurityException expected due to supplying wrong number of credentials");
- }
- catch (SecurityException se)
- {
- assertEquals("Unexpected exception message",
- JMXPasswordAuthenticator.SHOULD_HAVE_2_ELEMENTS, se.getMessage());
- }
-
- // Test handling of null credentials
- try
- {
- //send a null array
- credentials = null;
- _rmipa.authenticate(credentials);
- fail("SecurityException expected due to not supplying an array of credentials");
- }
- catch (SecurityException se)
- {
- assertEquals("Unexpected exception message",
- JMXPasswordAuthenticator.CREDENTIALS_REQUIRED, se.getMessage());
- }
-
- try
- {
- //send a null password
- credentials = new String[]{USERNAME, null};
- _rmipa.authenticate(credentials);
- fail("SecurityException expected due to sending a null password");
- }
- catch (SecurityException se)
- {
- assertEquals("Unexpected exception message",
- JMXPasswordAuthenticator.SHOULD_BE_NON_NULL, se.getMessage());
- }
-
- try
- {
- //send a null username
- credentials = new String[]{null, PASSWORD};
- _rmipa.authenticate(credentials);
- fail("SecurityException expected due to sending a null username");
- }
- catch (SecurityException se)
- {
- assertEquals("Unexpected exception message",
- JMXPasswordAuthenticator.SHOULD_BE_NON_NULL, se.getMessage());
- }
- }
-
private SubjectCreator createMockSubjectCreator(final boolean successfulAuth, final Exception exception)
{
SubjectCreator subjectCreator = mock(SubjectCreator.class);
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
index 84d2050450..b187207ed6 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
@@ -20,13 +20,10 @@
*/
package org.apache.qpid.server.util;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import java.net.SocketAddress;
import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.Collection;
@@ -89,7 +86,6 @@ public class BrokerTestHelper
when(broker.getConnection_sessionCountLimit()).thenReturn(1);
when(broker.getConnection_closeWhenNoRoute()).thenReturn(false);
when(broker.getId()).thenReturn(UUID.randomUUID());
- when(broker.getSubjectCreator(any(SocketAddress.class), anyBoolean())).thenReturn(subjectCreator);
when(broker.getSecurityManager()).thenReturn(new SecurityManager(broker, false));
when(broker.getObjectFactory()).thenReturn(objectFactory);
when(broker.getModel()).thenReturn(objectFactory.getModel());