diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-09-17 14:27:08 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-09-17 14:27:08 +0000 |
| commit | 3a6fcda9adccaad1910b3b49c183cacdb4cd8988 (patch) | |
| tree | a52372001c351bb375e45d5d4bcb4aa9e386b082 /qpid/java | |
| parent | a5a183cd30706ddc235b89465014498755479e88 (diff) | |
| download | qpid-python-3a6fcda9adccaad1910b3b49c183cacdb4cd8988.tar.gz | |
QPID-5138: Change http management to use AuthenticationProvider for getting references to SubjectCreator and PreferencesProvider
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1524063 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
7 files changed, 39 insertions, 40 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 d2e0c0dc6e..c6623aefcf 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 @@ -23,8 +23,6 @@ package org.apache.qpid.server.management.plugin; import java.lang.reflect.Type; import java.net.SocketAddress; import java.security.GeneralSecurityException; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; import java.util.Collection; import java.util.Collections; import java.util.EnumSet; @@ -78,7 +76,6 @@ import org.apache.qpid.server.model.User; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.adapter.AbstractPluginAdapter; import org.apache.qpid.server.plugin.PluginFactory; -import org.apache.qpid.server.security.SubjectCreator; import org.apache.qpid.server.util.MapValueConverter; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.DispatcherType; @@ -431,9 +428,9 @@ public class HttpManagement extends AbstractPluginAdapter implements HttpManagem } @Override - public SubjectCreator getSubjectCreator(SocketAddress localAddress) + public AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress) { - return getBroker().getSubjectCreator(localAddress); + return getBroker().getAuthenticationProvider(localAddress); } @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 56919e2e6b..7d89daa427 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,7 +22,7 @@ package org.apache.qpid.server.management.plugin; import java.net.SocketAddress; -import org.apache.qpid.server.security.SubjectCreator; +import org.apache.qpid.server.model.AuthenticationProvider; public interface HttpManagementConfiguration { @@ -34,5 +34,5 @@ public interface HttpManagementConfiguration boolean isHttpBasicAuthenticationEnabled(); - SubjectCreator getSubjectCreator(SocketAddress localAddress); + AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress); } 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 4c6e5bf63e..990ff1c53b 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 @@ -168,7 +168,7 @@ public class HttpManagementUtil { Subject subject = null; SocketAddress localAddress = getSocketAddress(request); - SubjectCreator subjectCreator = managementConfig.getSubjectCreator(localAddress); + SubjectCreator subjectCreator = managementConfig.getAuthenticationProvider(localAddress).getSubjectCreator(); String remoteUser = request.getRemoteUser(); if (remoteUser != null || subjectCreator.isAnonymousAuthenticationAllowed()) diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/PreferencesServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/PreferencesServlet.java index 84f074ba43..7bcfcbc7f7 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/PreferencesServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/PreferencesServlet.java @@ -14,7 +14,6 @@ import javax.servlet.http.HttpServletResponse; import org.apache.qpid.server.management.plugin.HttpManagementUtil; import org.apache.qpid.server.model.AuthenticationProvider; -import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.security.auth.AuthenticatedPrincipal; import org.codehaus.jackson.map.ObjectMapper; @@ -28,6 +27,11 @@ public class PreferencesServlet extends AbstractServlet ServletException { PreferencesProvider preferencesProvider = getPreferencesProvider(request); + if (preferencesProvider == null) + { + response.sendError(HttpServletResponse.SC_NOT_FOUND, "Preferences provider is not configured"); + return; + } String userName = getAuthenticatedUserName(request); Map<String, Object> preferences = preferencesProvider.getPreferences(userName); if (preferences == null) @@ -45,6 +49,11 @@ public class PreferencesServlet extends AbstractServlet throws ServletException, IOException { PreferencesProvider preferencesProvider = getPreferencesProvider(request); + if (preferencesProvider == null) + { + response.sendError(HttpServletResponse.SC_NOT_FOUND, "Preferences provider is not configured"); + return; + } String userName = getAuthenticatedUserName(request); ObjectMapper mapper = new ObjectMapper(); @@ -69,6 +78,10 @@ public class PreferencesServlet extends AbstractServlet throws ServletException, IOException { PreferencesProvider preferencesProvider = getPreferencesProvider(request); + if (preferencesProvider == null) + { + throw new IllegalStateException("Preferences provider is not configured"); + } String userName = getAuthenticatedUserName(request); ObjectMapper mapper = new ObjectMapper(); @@ -90,20 +103,14 @@ public class PreferencesServlet extends AbstractServlet return principal.getName(); } - private AuthenticationProvider getAuthenticationProvider(HttpServletRequest request) - { - Broker broker = getBroker(); - SocketAddress localAddress = HttpManagementUtil.getSocketAddress(request); - return broker.getAuthenticationProvider(localAddress); - } - private PreferencesProvider getPreferencesProvider(HttpServletRequest request) { - PreferencesProvider preferencesProvider = getAuthenticationProvider(request).getPreferencesProvider(); - if (preferencesProvider == null) + SocketAddress localAddress = HttpManagementUtil.getSocketAddress(request); + AuthenticationProvider authenticationProvider = getManagementConfiguration().getAuthenticationProvider(localAddress); + if (authenticationProvider == null) { - throw new IllegalStateException("Preferences provider is not configured"); + throw new IllegalStateException("Authentication provider is not found"); } - return preferencesProvider; + return authenticationProvider.getPreferencesProvider(); } } 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 b67c83dc7a..2b035fed8f 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 @@ -278,7 +278,7 @@ public class SaslServlet extends AbstractServlet private SubjectCreator getSubjectCreator(HttpServletRequest request) { SocketAddress localAddress = HttpManagementUtil.getSocketAddress(request); - return HttpManagementUtil.getManagementConfiguration(getServletContext()).getSubjectCreator(localAddress); + return HttpManagementUtil.getManagementConfiguration(getServletContext()).getAuthenticationProvider(localAddress).getSubjectCreator(); } @Override diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/UserPreferencesServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/UserPreferencesServlet.java index 0dd2d6ff5f..3fc0a76efb 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/UserPreferencesServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/UserPreferencesServlet.java @@ -47,15 +47,14 @@ public class UserPreferencesServlet extends AbstractServlet throws IOException { Map<String, Object> preferences = null; - try + PreferencesProvider preferencesProvider = getPreferencesProvider(authenticationProviderName); + if (preferencesProvider == null) { - preferences = getUserPreferences(authenticationProviderName, userId); - } - catch (Exception e) - { - LOGGER.debug("Bad preferences request", e); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, e.getMessage()); + response.sendError(HttpServletResponse.SC_NOT_FOUND, "Preferences provider is not configured"); + return; } + preferences = preferencesProvider.getPreferences(userId); + sendJsonResponse(preferences, response); } @@ -74,7 +73,7 @@ public class UserPreferencesServlet extends AbstractServlet sendJsonResponse(users, response); } - private Map<String, Object> getUserPreferences(String authenticationProviderName, String userId) + private PreferencesProvider getPreferencesProvider(String authenticationProviderName) { AuthenticationProvider authenticationProvider = getAuthenticationProvider(authenticationProviderName); if (authenticationProvider == null) @@ -83,12 +82,7 @@ public class UserPreferencesServlet extends AbstractServlet authenticationProviderName)); } PreferencesProvider preferencesProvider = authenticationProvider.getPreferencesProvider(); - if (preferencesProvider == null) - { - throw new IllegalStateException(String.format( - "Preferences provider is not set for authentication provider '%s'", authenticationProviderName)); - } - return preferencesProvider.getPreferences(userId); + return preferencesProvider; } private AuthenticationProvider getAuthenticationProvider(String authenticationProviderName) 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 18d774e341..d0a357fd28 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 @@ -29,6 +29,7 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; +import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.security.SubjectCreator; import org.apache.qpid.test.utils.QpidTestCase; @@ -88,13 +89,13 @@ public class HttpManagementTest extends QpidTestCase _management.isHttpBasicAuthenticationEnabled()); } - public void testGetSubjectCreator() + public void testGetAuthenticationProvider() { SocketAddress localAddress = InetSocketAddress.createUnresolved("localhost", 8080); - SubjectCreator subjectCreator = mock(SubjectCreator.class); - when(_broker.getSubjectCreator(localAddress)).thenReturn(subjectCreator); - SubjectCreator httpManagementSubjectCreator = _management.getSubjectCreator(localAddress); - assertEquals("Unexpected subject creator", subjectCreator, httpManagementSubjectCreator); + AuthenticationProvider brokerAuthenticationProvider = mock(AuthenticationProvider.class); + when(_broker.getAuthenticationProvider(localAddress)).thenReturn(brokerAuthenticationProvider); + AuthenticationProvider authenticationProvider = _management.getAuthenticationProvider(localAddress); + assertEquals("Unexpected subject creator", brokerAuthenticationProvider, authenticationProvider); } } |
