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