diff options
| author | Keith Wall <kwall@apache.org> | 2015-04-10 09:57:39 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2015-04-10 09:57:39 +0000 |
| commit | 60c56cbf7bf8afd5dc577480853e7214cb60b3e2 (patch) | |
| tree | 472e786d636fd51ae12ea0061596ec7e0b64d811 /qpid/java/broker-core | |
| parent | b187311574bbf087f376256d237173b38a84fdbc (diff) | |
| download | qpid-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')
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()); |
