You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2015/04/10 11:57:39 UTC

svn commit: r1672602 - in /qpid/trunk/qpid/java: broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/java/org/apache/qpid/server/model/adapter/ broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/ broker-core/src...

Author: kwall
Date: Fri Apr 10 09:57:39 2015
New Revision: 1672602

URL: http://svn.apache.org/r1672602
Log:
QPID-6485: [Java Broker] Remove superfluous find/get methods from the Broker configured object

Modified:
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
    qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
    qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
    qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java
    qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java Fri Apr 10 09:57:39 2015
@@ -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
      */
     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);

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Fri Apr 10 09:57:39 2015
@@ -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.Lo
 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 Abstr
     @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 Abstr
     @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 Abstr
     }
 
     @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);

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticator.java Fri Apr 10 09:57:39 2015
@@ -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 im
     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 im
         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 im
             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 im
             @Override
             public Object run()
             {
-                _broker.getSecurityManager().accessManagement();
+                _securityManager.accessManagement();
                 return null;
             }
         });

Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java Fri Apr 10 09:57:39 2015
@@ -392,8 +392,6 @@ public class PortFactoryTest extends Qpi
         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);

Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/jmx/JMXPasswordAuthenticatorTest.java Fri Apr 10 09:57:39 2015
@@ -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 JMXPasswordAuthenticatorTes
     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 JMXPasswordAuthenticatorTes
     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 JMXPasswordAuthenticatorTes
      */
     public void testUsernameOrPasswordInvalid()
     {
-        when(_broker.getSubjectCreator(any(SocketAddress.class), anyBoolean())).thenReturn(_badPasswordSubjectCreator);
+        _rmipa = new JMXPasswordAuthenticator(_badPasswordSubjectCreator, _securityManager);
 
         try
         {
@@ -102,7 +89,7 @@ public class JMXPasswordAuthenticatorTes
 
     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 JMXPasswordAuthenticatorTes
     {
         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 JMXPasswordAuthenticatorTes
         }
     }
 
-    /**
-     * 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);

Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java Fri Apr 10 09:57:39 2015
@@ -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());

Modified: qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java Fri Apr 10 09:57:39 2015
@@ -30,6 +30,7 @@ import org.apache.qpid.server.model.Tran
 import org.apache.qpid.server.model.port.AmqpPort;
 import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.plugin.ProtocolEngineCreator;
+import org.apache.qpid.server.security.SubjectCreator;
 import org.apache.qpid.transport.ConnectionDelegate;
 import org.apache.qpid.transport.network.NetworkConnection;
 
@@ -76,11 +77,10 @@ public class ProtocolEngineCreator_0_10
         {
             fqdn = ((InetSocketAddress) address).getHostName();
         }
-        final ConnectionDelegate connDelegate = new ServerConnectionDelegate(broker,
-                fqdn, broker.getSubjectCreator(address, transport.isSecure())
-        );
+        SubjectCreator subjectCreator = port.getAuthenticationProvider().getSubjectCreator(transport.isSecure());
+        ConnectionDelegate connDelegate = new ServerConnectionDelegate(broker, fqdn, subjectCreator);
 
-        ServerConnection conn = new ServerConnection(id,broker, port, transport);
+        ServerConnection conn = new ServerConnection(id, broker, port, transport);
 
         conn.setConnectionDelegate(connDelegate);
         conn.setRemoteAddress(network.getRemoteAddress());

Modified: qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java Fri Apr 10 09:57:39 2015
@@ -485,7 +485,8 @@ public class AMQProtocolEngine implement
             setProtocolVersion(pv);
 
             StringBuilder mechanismBuilder = new StringBuilder();
-            for(String mechanismName : _broker.getSubjectCreator(getLocalAddress(), _transport.isSecure()).getMechanisms())
+            SubjectCreator subjectCreator = _port.getAuthenticationProvider().getSubjectCreator(_transport.isSecure());
+            for(String mechanismName : subjectCreator.getMechanisms())
             {
                 if(mechanismBuilder.length() != 0)
                 {
@@ -1899,7 +1900,7 @@ public class AMQProtocolEngine implement
 
     public SubjectCreator getSubjectCreator()
     {
-        return _broker.getSubjectCreator(getLocalAddress(), getTransport().isSecure());
+        return _port.getAuthenticationProvider().getSubjectCreator(getTransport().isSecure());
     }
 
     public EventLogger getEventLogger()

Modified: qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java Fri Apr 10 09:57:39 2015
@@ -232,7 +232,7 @@ public class ProtocolEngine_1_0_0_SASL i
 
         Container container = new Container(_broker.getId().toString());
 
-        SubjectCreator subjectCreator = _broker.getSubjectCreator(getLocalAddress(), _transport.isSecure());
+        SubjectCreator subjectCreator = _port.getAuthenticationProvider().getSubjectCreator(_transport.isSecure());
         _endpoint = new ConnectionEndpoint(container, asSaslServerProvider(subjectCreator));
         _endpoint.setLogger(new ConnectionEndpoint.FrameReceiptLogger()
         {

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java Fri Apr 10 09:57:39 2015
@@ -22,6 +22,7 @@ package org.apache.qpid.server.managemen
 
 import java.io.IOException;
 import java.io.Writer;
+import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
@@ -556,7 +557,18 @@ public class HttpManagement extends Abst
     @Override
     public AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress)
     {
-        return getBroker().getAuthenticationProvider(localAddress);
+        InetSocketAddress inetSocketAddress = (InetSocketAddress)localAddress;
+        AuthenticationProvider provider = null;
+        Collection<Port<?>> ports = getBroker().getPorts();
+        for (Port<?> p : ports)
+        {
+            if (p instanceof HttpPort && inetSocketAddress.getPort() == p.getPort())
+            {
+                provider = ((HttpPort<?>) p).getAuthenticationProvider();
+                break;
+            }
+        }
+        return provider;
     }
 
     @Override

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java Fri Apr 10 09:57:39 2015
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.when;
 
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
@@ -39,6 +40,7 @@ import org.apache.qpid.server.model.Conf
 import org.apache.qpid.server.model.ConfiguredObjectFactory;
 import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl;
 import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.port.HttpPort;
 import org.apache.qpid.test.utils.QpidTestCase;
 
 public class HttpManagementTest extends QpidTestCase
@@ -115,7 +117,10 @@ public class HttpManagementTest extends
     {
         SocketAddress localAddress = InetSocketAddress.createUnresolved("localhost", 8080);
         AuthenticationProvider brokerAuthenticationProvider = mock(AuthenticationProvider.class);
-        when(_broker.getAuthenticationProvider(localAddress)).thenReturn(brokerAuthenticationProvider);
+        HttpPort port = mock(HttpPort.class);
+        when(port.getPort()).thenReturn(8080);
+        when(port.getAuthenticationProvider()).thenReturn(brokerAuthenticationProvider);
+        when(_broker.getPorts()).thenReturn(Collections.singletonList(port));
         AuthenticationProvider authenticationProvider = _management.getAuthenticationProvider(localAddress);
         assertEquals("Unexpected subject creator", brokerAuthenticationProvider, authenticationProvider);
     }

Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java Fri Apr 10 09:57:39 2015
@@ -23,7 +23,6 @@ package org.apache.qpid.server.jmx;
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
 import java.net.InetAddress;
-import java.net.InetSocketAddress;
 import java.net.UnknownHostException;
 import java.rmi.AlreadyBoundException;
 import java.rmi.NoSuchObjectException;
@@ -57,8 +56,10 @@ import org.apache.qpid.server.logging.Ev
 import org.apache.qpid.server.logging.messages.ManagementConsoleMessages;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.KeyStore;
-import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.model.port.JmxPort;
+import org.apache.qpid.server.model.port.RmiPort;
+import org.apache.qpid.server.security.SubjectCreator;
 import org.apache.qpid.server.security.auth.jmx.JMXPasswordAuthenticator;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
 
@@ -78,12 +79,12 @@ public class JMXManagedObjectRegistry im
     private Registry _rmiRegistry;
 
     private final Broker _broker;
-    private final Port _registryPort;
-    private final Port _connectorPort;
+    private final RmiPort _registryPort;
+    private final JmxPort _connectorPort;
 
      public JMXManagedObjectRegistry(
             Broker broker,
-            Port connectorPort, Port registryPort,
+            JmxPort connectorPort, RmiPort registryPort,
             JMXManagementPlugin jmxManagement)
     {
         _broker = broker;
@@ -158,8 +159,14 @@ public class JMXManagedObjectRegistry im
         int jmxPortConnectorServer = _connectorPort.getPort();
 
         //add a JMXAuthenticator implementation the env map to authenticate the RMI based JMX connector server
-        JMXPasswordAuthenticator rmipa = new JMXPasswordAuthenticator(_broker, new InetSocketAddress(jmxPortConnectorServer), connectorSslEnabled);
-        HashMap<String,Object> connectorEnv = new HashMap<String,Object>();
+        SubjectCreator subjectCreator =_connectorPort.getAuthenticationProvider().getSubjectCreator(connectorSslEnabled);
+        if (subjectCreator == null)
+        {
+            throw new SecurityException("Can't get subject creator for " + _connectorPort);
+        }
+
+        JMXPasswordAuthenticator rmipa = new JMXPasswordAuthenticator(subjectCreator, _broker.getSecurityManager());
+        HashMap<String,Object> connectorEnv = new HashMap<>();
         connectorEnv.put(JMXConnectorServer.AUTHENTICATOR, rmipa);
 
         System.setProperty("java.rmi.server.randomIDs", "true");

Modified: qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java?rev=1672602&r1=1672601&r2=1672602&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java Fri Apr 10 09:57:39 2015
@@ -33,10 +33,12 @@ import java.util.EnumSet;
 import java.util.Iterator;
 import java.util.Set;
 
+import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.Protocol;
 import org.apache.qpid.server.model.port.AmqpPort;
+import org.apache.qpid.server.security.SubjectCreator;
 import org.apache.qpid.server.util.BrokerTestHelper;
 import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 import org.apache.qpid.test.utils.QpidTestCase;
@@ -45,7 +47,6 @@ import org.apache.qpid.transport.network
 
 public class MultiVersionProtocolEngineFactoryTest extends QpidTestCase
 {
-    private VirtualHostImpl _virtualHost;
     private Broker _broker;
 
     @Override
@@ -154,11 +155,19 @@ public class MultiVersionProtocolEngineF
     {
         Set<Protocol> protocols = getAllAMQPProtocols();
 
+        SubjectCreator subjectCreator = mock(SubjectCreator.class);
+
+        AuthenticationProvider<?> authProvider = mock(AuthenticationProvider.class);
+        when(authProvider.getSubjectCreator(false)).thenReturn(subjectCreator);
+
         AmqpPort<?> port = mock(AmqpPort.class);
         when(port.canAcceptNewConnection(any(SocketAddress.class))).thenReturn(true);
         when(port.getContextValue(eq(Integer.class), eq(AmqpPort.PORT_MAX_MESSAGE_SIZE))).thenReturn(AmqpPort.DEFAULT_MAX_MESSAGE_SIZE);
+        when(port.getAuthenticationProvider()).thenReturn(authProvider);
+
+
 
-        when(port.getContextValue(eq(Long.class),eq(Port.CONNECTION_MAXIMUM_AUTHENTICATION_DELAY))).thenReturn(10000l);
+        when(port.getContextValue(eq(Long.class), eq(Port.CONNECTION_MAXIMUM_AUTHENTICATION_DELAY))).thenReturn(10000l);
         MultiVersionProtocolEngineFactory factory =
             new MultiVersionProtocolEngineFactory(_broker, protocols, null, port,
                     org.apache.qpid.server.model.Transport.TCP);



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