You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2012/06/19 14:20:48 UTC
svn commit: r1351668 - in
/qpid/branches/java-config-and-management/qpid/java:
broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/
broker-plugins/management/src/main/java/resources/
broker/src/main/java/org/ap...
Author: rgodfrey
Date: Tue Jun 19 12:20:48 2012
New Revision: 1351668
URL: http://svn.apache.org/viewvc?rev=1351668&view=rev
Log:
QPID-3999 : Apply patch to use anonymous principal by default (from Alex Rudyy), also reenable sasl login
Modified:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/management.html
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java
Modified: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java?rev=1351668&r1=1351667&r2=1351668&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java (original)
+++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java Tue Jun 19 12:20:48 2012
@@ -36,11 +36,11 @@ import org.apache.commons.codec.binary.B
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.registry.ApplicationRegistry;
import org.apache.qpid.server.security.auth.AuthenticationResult;
+import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
public abstract class AbstractServlet extends HttpServlet
{
- private Subject _subject;
private final Broker _broker;
private SocketAddress _socketAddress;
@@ -78,7 +78,6 @@ public abstract class AbstractServlet ex
private void clearAuthorizedSubject()
{
- _subject = null;
org.apache.qpid.server.security.SecurityManager.setThreadSubject(null);
}
@@ -99,6 +98,12 @@ public abstract class AbstractServlet ex
else
{
String header = request.getHeader("Authorization");
+
+ /*
+ * TODO - Should configure whether basic authentication is allowed... and in particular whether it
+ * should be allowed over non-ssl connections
+ * */
+
if (header != null)
{
String[] tokens = header.split("\\s");
@@ -120,14 +125,17 @@ public abstract class AbstractServlet ex
}
}
}
- _subject = subject;
+ if (subject == null)
+ {
+ subject = AnonymousAuthenticationManager.ANONYMOUS_SUBJECT;
+ }
org.apache.qpid.server.security.SecurityManager.setThreadSubject(subject);
}
- protected Subject getSubject()
+ protected Subject getSubject(HttpSession session)
{
- return _subject;
+ return (Subject)session.getAttribute("subject");
}
@Override
Modified: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java?rev=1351668&r1=1351667&r2=1351668&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java (original)
+++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java Tue Jun 19 12:20:48 2012
@@ -18,6 +18,7 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.qpid.AMQSecurityException;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Model;
@@ -398,8 +399,7 @@ public class RestServlet extends Abstrac
}
catch (RuntimeException e)
{
- // TODO
- response.setStatus(HttpServletResponse.SC_CONFLICT);
+ setResponseStatus(response, e);
return;
}
@@ -470,8 +470,7 @@ public class RestServlet extends Abstrac
}
catch (RuntimeException e)
{
- // TODO
- response.setStatus(HttpServletResponse.SC_CONFLICT);
+ setResponseStatus(response, e);
return;
}
@@ -479,4 +478,17 @@ public class RestServlet extends Abstrac
response.setStatus(HttpServletResponse.SC_CREATED);
}
+ private void setResponseStatus(HttpServletResponse response, RuntimeException e) throws IOException
+ {
+ if (e.getCause() instanceof AMQSecurityException)
+ {
+ response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+ }
+ else
+ {
+ // TODO
+ response.setStatus(HttpServletResponse.SC_CONFLICT);
+ }
+ }
+
}
Modified: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java?rev=1351668&r1=1351667&r2=1351668&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java (original)
+++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java Tue Jun 19 12:20:48 2012
@@ -121,45 +121,25 @@ public class SaslServlet extends Abstrac
{
try
{
- response.setContentType("application/json");
- response.setHeader("Cache-Control","no-cache");
- response.setHeader("Pragma","no-cache");
- response.setDateHeader("Expires", 0);
+ response.setContentType("application/json");
+ response.setHeader("Cache-Control","no-cache");
+ response.setHeader("Pragma","no-cache");
+ response.setDateHeader("Expires", 0);
- HttpSession session = request.getSession();
+ HttpSession session = request.getSession();
- String mechanism = request.getParameter("mechanism");
- String id = request.getParameter("id");
- String saslResponse = request.getParameter("response");
+ String mechanism = request.getParameter("mechanism");
+ String id = request.getParameter("id");
+ String saslResponse = request.getParameter("response");
- AuthenticationManager authManager = ApplicationRegistry.getInstance().getAuthenticationManager(getSocketAddress(request));
+ AuthenticationManager authManager = ApplicationRegistry.getInstance().getAuthenticationManager(getSocketAddress(request));
- if(mechanism != null)
- {
- if(id == null)
- {
- SaslServer saslServer = authManager.createSaslServer(mechanism, request.getServerName(), null/*TODO*/);
- evaluateSaslResponse(response, session, saslResponse, saslServer);
- }
- else
- {
- response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
- session.removeAttribute(ATTR_ID);
- session.removeAttribute(ATTR_SASL_SERVER);
- session.removeAttribute(ATTR_EXPIRY);
-
- }
-
- }
- else
- {
- if(id != null)
+ if(mechanism != null)
{
- if(id.equals(session.getAttribute(ATTR_ID)) && System.currentTimeMillis() < (Long) session.getAttribute(ATTR_EXPIRY))
+ if(id == null)
{
- SaslServer saslServer = (SaslServer) session.getAttribute(ATTR_SASL_SERVER);
+ SaslServer saslServer = authManager.createSaslServer(mechanism, request.getServerName(), null/*TODO*/);
evaluateSaslResponse(response, session, saslResponse, saslServer);
-
}
else
{
@@ -167,25 +147,47 @@ public class SaslServlet extends Abstrac
session.removeAttribute(ATTR_ID);
session.removeAttribute(ATTR_SASL_SERVER);
session.removeAttribute(ATTR_EXPIRY);
+
}
+
}
else
{
- response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
- session.removeAttribute(ATTR_ID);
- session.removeAttribute(ATTR_SASL_SERVER);
- session.removeAttribute(ATTR_EXPIRY);
+ if(id != null)
+ {
+ if(id.equals(session.getAttribute(ATTR_ID)) && System.currentTimeMillis() < (Long) session.getAttribute(ATTR_EXPIRY))
+ {
+ SaslServer saslServer = (SaslServer) session.getAttribute(ATTR_SASL_SERVER);
+ evaluateSaslResponse(response, session, saslResponse, saslServer);
+
+ }
+ else
+ {
+ response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
+ session.removeAttribute(ATTR_ID);
+ session.removeAttribute(ATTR_SASL_SERVER);
+ session.removeAttribute(ATTR_EXPIRY);
+ }
+ }
+ else
+ {
+ response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
+ session.removeAttribute(ATTR_ID);
+ session.removeAttribute(ATTR_SASL_SERVER);
+ session.removeAttribute(ATTR_EXPIRY);
+ }
}
}
- }
catch(IOException e)
{
+ //TODO
e.printStackTrace();
throw e;
}
catch(RuntimeException e)
{
+ //TODO
e.printStackTrace();
throw e;
}
Modified: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/management.html
URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/management.html?rev=1351668&r1=1351667&r2=1351668&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/management.html (original)
+++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/management.html Tue Jun 19 12:20:48 2012
@@ -64,7 +64,8 @@
"dojo/parser",
"qpid/management/treeView",
"qpid/management/controller",
- "qpid/common/footer"]);
+ "qpid/common/footer",
+ "qpid/authorization/sasl"]);
</script>
</head>
Modified: qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java?rev=1351668&r1=1351667&r2=1351668&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java (original)
+++ qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java Tue Jun 19 12:20:48 2012
@@ -47,7 +47,7 @@ public class AnonymousAuthenticationMana
private static final Principal ANONYMOUS_PRINCIPAL = new UsernamePrincipal("ANONYMOUS");
- private static final Subject ANONYMOUS_SUBJECT = new Subject();
+ public static final Subject ANONYMOUS_SUBJECT = new Subject();
static
{
ANONYMOUS_SUBJECT.getPrincipals().add(ANONYMOUS_PRINCIPAL);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org