diff options
author | Robert Gemmell <robbie@apache.org> | 2012-11-28 18:57:26 +0000 |
---|---|---|
committer | Robert Gemmell <robbie@apache.org> | 2012-11-28 18:57:26 +0000 |
commit | ba0504adc866999af400a8df9625b6dbacd01784 (patch) | |
tree | dd3cd97663c81d69151a80a14337f13abf16ba02 | |
parent | 630b051a2d9f3ac9046db08cfb14727ef6693b3f (diff) | |
download | qpid-python-ba0504adc866999af400a8df9625b6dbacd01784.tar.gz |
QPID-4475: enable the web management UI support the PLAIN mechanism for SASL login
merge from trunk r1414256
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.20@1414863 13f79535-47bb-0310-9956-ffa450edef68
2 files changed, 41 insertions, 2 deletions
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 df77f9dc5d..f8c8b52023 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 @@ -146,6 +146,10 @@ public class SaslServlet extends AbstractServlet { if(id == null) { + if(LOGGER.isDebugEnabled()) + { + LOGGER.debug("Creating SaslServer for mechanism: " + mechanism); + } SaslServer saslServer = subjectCreator.createSaslServer(mechanism, request.getServerName(), null/*TODO*/); evaluateSaslResponse(request, response, session, saslResponse, saslServer, subjectCreator); } diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js index 98313c6798..b4f0728685 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js @@ -152,10 +152,45 @@ var saslCramMD5 = function saslCramMD5(user, password) }); }; +var containsMechanism = function containsMechanism(mechanisms, mech) +{ + for (var i = 0; i < mechanisms.length; i++) { + if (mechanisms[i] == mech) { + return true; + } + } + + return false; +}; + var doAuthenticate = function doAuthenticate() { - saslCramMD5(dojo.byId("username").value, dojo.byId("pass").value); - updateAuthentication(); + dojo.xhrGet({ + // The URL of the request + url: "rest/sasl", + handleAs: "json" + }).then(function(data) + { + var mechMap = data.mechanisms; + + if (containsMechanism(mechMap, "CRAM-MD5")) + { + saslCramMD5(dojo.byId("username").value, dojo.byId("pass").value); + updateAuthentication(); + } + else if (containsMechanism(mechMap, "PLAIN")) + { + saslPlain(dojo.byId("username").value, dojo.byId("pass").value); + updateAuthentication(); + } + else + { + alert("No supported SASL mechanism offered: " + mechMap); + } + } + ); + + }; |