diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2015-04-10 12:45:28 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2015-04-10 12:45:28 +0000 |
commit | 1d6c8836f2990ed8077805655bd3c1b7d3b7d4c0 (patch) | |
tree | 2abdbecc31067a419cfb4680fb62278769f6aff6 /qpid/java | |
parent | 26a85b7021e679299a7ba187f0194364d2db16bc (diff) | |
download | qpid-python-1d6c8836f2990ed8077805655bd3c1b7d3b7d4c0.tar.gz |
QPID-6488 : Set the Port object as an attribute on every HttpRequest
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1672632 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
6 files changed, 39 insertions, 35 deletions
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java index f9293a33b0..fbe9f068b9 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java @@ -22,8 +22,6 @@ package org.apache.qpid.server.management.plugin; import java.io.IOException; import java.io.Writer; -import java.net.InetSocketAddress; -import java.net.SocketAddress; import java.security.GeneralSecurityException; import java.util.ArrayList; import java.util.Arrays; @@ -45,7 +43,9 @@ import javax.servlet.http.HttpServletRequest; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import org.eclipse.jetty.io.EndPoint; import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.SessionManager; import org.eclipse.jetty.server.handler.ErrorHandler; @@ -93,6 +93,7 @@ import org.apache.qpid.transport.network.security.ssl.SSLUtil; @ManagedObject( category = false, type = "MANAGEMENT-HTTP" ) public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implements HttpManagementConfiguration<HttpManagement>, PortManager { + private static final String PORT_SERVLET_ATTRIBUTE = "org.apache.qpid.server.model.Port"; private final Logger _logger = LoggerFactory.getLogger(HttpManagement.class); // 10 minutes by default @@ -224,7 +225,16 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem Collection<Transport> transports = port.getTransports(); if (!transports.contains(Transport.SSL)) { - connector = new SelectChannelConnector(); + final Port thePort = port; + connector = new SelectChannelConnector() + { + @Override + public void customize(final EndPoint endpoint, final Request request) throws IOException + { + super.customize(endpoint, request); + request.setAttribute(PORT_SERVLET_ATTRIBUTE, thePort); + } + }; } else if (transports.contains(Transport.SSL)) { @@ -452,7 +462,23 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem } connector = port.getTransports().contains(Transport.TCP) ? new TcpAndSslSelectChannelConnector(factory) - : new SslSelectChannelConnector(factory); + { + @Override + public void customize(final EndPoint endpoint, final Request request) throws IOException + { + super.customize(endpoint, request); + request.setAttribute(PORT_SERVLET_ATTRIBUTE, port); + } + } + : new SslSelectChannelConnector(factory) + { + @Override + public void customize(final EndPoint endpoint, final Request request) throws IOException + { + super.customize(endpoint, request); + request.setAttribute(PORT_SERVLET_ATTRIBUTE, port); + } + }; return connector; } @@ -555,20 +581,10 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem } @Override - public AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress) + public AuthenticationProvider getAuthenticationProvider(HttpServletRequest request) { - 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; + HttpPort<?> port = (HttpPort<?>)request.getAttribute(PORT_SERVLET_ATTRIBUTE); + return port == null ? null : port.getAuthenticationProvider(); } @Override diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java index 018b23daaf..d3d9770912 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java @@ -22,6 +22,8 @@ package org.apache.qpid.server.management.plugin; import java.net.SocketAddress; +import javax.servlet.http.HttpServletRequest; + import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.ManagedAttribute; import org.apache.qpid.server.model.ManagedContextDefault; @@ -76,5 +78,5 @@ public interface HttpManagementConfiguration<X extends HttpManagementConfigurati - AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress); + AuthenticationProvider getAuthenticationProvider(HttpServletRequest request); } diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java index 847ada3407..90906538d2 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java @@ -156,8 +156,7 @@ public class HttpManagementUtil public static Subject tryToAuthenticate(HttpServletRequest request, HttpManagementConfiguration managementConfig) { Subject subject = null; - SocketAddress localAddress = getSocketAddress(request); - final AuthenticationProvider authenticationProvider = managementConfig.getAuthenticationProvider(localAddress); + final AuthenticationProvider authenticationProvider = managementConfig.getAuthenticationProvider(request); SubjectCreator subjectCreator = authenticationProvider.getSubjectCreator(request.isSecure()); String remoteUser = request.getRemoteUser(); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java index 25d109ba29..6984a32e09 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LoggedOnUserPreferencesServlet.java @@ -128,8 +128,7 @@ public class LoggedOnUserPreferencesServlet extends AbstractServlet private PreferencesProvider getPreferencesProvider(HttpServletRequest request) { - SocketAddress localAddress = HttpManagementUtil.getSocketAddress(request); - AuthenticationProvider authenticationProvider = getManagementConfiguration().getAuthenticationProvider(localAddress); + AuthenticationProvider authenticationProvider = getManagementConfiguration().getAuthenticationProvider(request); if (authenticationProvider == null) { throw new IllegalStateException("Authentication provider is not found"); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java index 6524a24757..5bff0e22e5 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java @@ -301,8 +301,7 @@ public class SaslServlet extends AbstractServlet private SubjectCreator getSubjectCreator(HttpServletRequest request) { - SocketAddress localAddress = HttpManagementUtil.getSocketAddress(request); - return HttpManagementUtil.getManagementConfiguration(getServletContext()).getAuthenticationProvider(localAddress).getSubjectCreator( + return HttpManagementUtil.getManagementConfiguration(getServletContext()).getAuthenticationProvider(request).getSubjectCreator( request.isSecure()); } diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java index d1b923048b..4031f13655 100644 --- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java +++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java @@ -113,16 +113,5 @@ public class HttpManagementTest extends QpidTestCase _management.isHttpBasicAuthenticationEnabled()); } - public void testGetAuthenticationProvider() - { - SocketAddress localAddress = InetSocketAddress.createUnresolved("localhost", 8080); - AuthenticationProvider brokerAuthenticationProvider = mock(AuthenticationProvider.class); - 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); - } } |