You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2013/03/11 19:29:46 UTC
svn commit: r1455273 [1/2] - in /qpid/trunk/qpid/java:
broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/
broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/
broker-plu...
Author: orudyy
Date: Mon Mar 11 18:29:45 2013
New Revision: 1455273
URL: http://svn.apache.org/r1455273
Log:
QPID-4638: Add UI to add/delete/update authentication providers into java broker web management console
Added:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/Action.java
- copied, changed from r1455200, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PasswordFileAuthenticationProviderAttributeDescriptions.properties
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationProviderAttributeDescriptions.properties
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/util/ResourceBundleLoader.java
- copied, changed from r1455200, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showAuthProvider.html
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Broker.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java
qpid/trunk/qpid/java/broker/src/main/resources/initial-store.json
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java Mon Mar 11 18:29:45 2013
@@ -36,6 +36,7 @@ import org.apache.qpid.server.logging.me
import org.apache.qpid.server.management.plugin.servlet.DefinedFileServlet;
import org.apache.qpid.server.management.plugin.servlet.FileServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.AbstractServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.HelperServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.LogRecordsServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.LogoutServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.MessageContentServlet;
@@ -303,6 +304,7 @@ public class HttpManagement extends Abst
root.addServlet(new ServletHolder(FileServlet.INSTANCE), "*.json");
root.addServlet(new ServletHolder(FileServlet.INSTANCE), "*.txt");
root.addServlet(new ServletHolder(FileServlet.INSTANCE), "*.xsl");
+ root.addServlet(new ServletHolder(new HelperServlet()), "/rest/helper");
final SessionManager sessionManager = root.getSessionHandler().getSessionManager();
Copied: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/Action.java (from r1455200, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/Action.java?p2=qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/Action.java&p1=qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java&r1=1455200&r2=1455273&rev=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/Action.java Mon Mar 11 18:29:45 2013
@@ -15,17 +15,18 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
+ *
+ *
*/
-package org.apache.qpid.server.plugin;
+package org.apache.qpid.server.management.plugin.servlet.rest;
import java.util.Map;
-import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
+import org.apache.qpid.server.model.Broker;
-public interface AuthenticationManagerFactory
+public interface Action
{
- public static final String ATTRIBUTE_TYPE = "authenticationProviderType";
-
- AuthenticationManager createInstance(Map<String, Object> attributes);
+ String getName();
+ Object perform(Map<String, Object> request, Broker broker);
}
Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java?rev=1455273&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java Mon Mar 11 18:29:45 2013
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *
+ */
+package org.apache.qpid.server.management.plugin.servlet.rest;
+
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.qpid.server.management.plugin.servlet.rest.action.ListAuthenticationProviderAttributes;
+import org.apache.qpid.server.model.Broker;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.SerializationConfig;
+
+public class HelperServlet extends AbstractServlet
+{
+ private static final String PARAM_ACTION = "action";
+
+ private Map<String, Action> _actions;
+ private ObjectMapper _mapper;
+
+ public HelperServlet()
+ {
+ _mapper = new ObjectMapper();
+ _mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
+ _actions = new HashMap<String, Action>();
+ Action listProviderAttributes = new ListAuthenticationProviderAttributes();
+ _actions.put(listProviderAttributes.getName(), listProviderAttributes);
+ }
+
+ @Override
+ protected void doGetWithSubjectAndActor(HttpServletRequest request, HttpServletResponse response) throws ServletException,
+ IOException
+ {
+ perform(request, response);
+ }
+
+ @Override
+ protected void doPostWithSubjectAndActor(HttpServletRequest request, HttpServletResponse response) throws ServletException,
+ IOException
+ {
+ perform(request, response);
+ }
+
+ private void perform(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
+ {
+ String actionName = request.getParameter(PARAM_ACTION);
+ Action action = _actions.get(actionName);
+ if (action == null)
+ {
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ @SuppressWarnings("unchecked")
+ Enumeration<String> names = request.getParameterNames();
+ while (names.hasMoreElements())
+ {
+ String name = (String) names.nextElement();
+ String[] values = request.getParameterValues(name);
+ if (values.length == 1)
+ {
+ parameters.put(name, values[0]);
+ }
+ else
+ {
+ parameters.put(name, values);
+ }
+ }
+
+ Object output = action.perform(parameters, (Broker) getServletContext().getAttribute(ATTR_BROKER));
+ if (output == null)
+ {
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+ response.setContentType("application/json");
+ final Writer writer = new BufferedWriter(response.getWriter());
+ _mapper.writeValue(writer, output);
+
+ response.setStatus(HttpServletResponse.SC_OK);
+
+ }
+}
Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java?rev=1455273&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java Mon Mar 11 18:29:45 2013
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *
+ */
+package org.apache.qpid.server.management.plugin.servlet.rest.action;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.qpid.server.management.plugin.servlet.rest.Action;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.plugin.QpidServiceLoader;
+
+public class ListAuthenticationProviderAttributes implements Action
+{
+ private static final String ATTRIBUTES = "attributes";
+ private static final String DESCRIPTIONS = "descriptions";
+ private Map<String, AuthenticationManagerFactory> _factories;
+
+ public ListAuthenticationProviderAttributes()
+ {
+ _factories = new TreeMap<String, AuthenticationManagerFactory>();
+ Iterable<AuthenticationManagerFactory> factories = new QpidServiceLoader<AuthenticationManagerFactory>()
+ .instancesOf(AuthenticationManagerFactory.class);
+ for (AuthenticationManagerFactory factory : factories)
+ {
+ _factories.put(factory.getType(), factory);
+ }
+ }
+
+ @Override
+ public String getName()
+ {
+ return ListAuthenticationProviderAttributes.class.getSimpleName();
+ }
+
+ @Override
+ public Object perform(Map<String, Object> request, Broker broker)
+ {
+ Map<String, Object> attributes = new TreeMap<String, Object>();
+ for (String providerType : _factories.keySet())
+ {
+ AuthenticationManagerFactory factory = _factories.get(providerType);
+
+ Map<String, Object> data = new HashMap<String, Object>();
+ data.put(ATTRIBUTES, factory.getAttributeNames());
+ Map<String, String> resources = factory.getAttributeDescriptions();
+ if (resources != null)
+ {
+ data.put(DESCRIPTIONS, resources);
+ }
+
+ attributes.put(factory.getType(), data);
+ }
+ return attributes;
+ }
+
+}
Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html?rev=1455273&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html Mon Mar 11 18:29:45 2013
@@ -0,0 +1,38 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<div class="dijitHidden">
+ <div data-dojo-type="dijit.Dialog" style="width:600px;" data-dojo-props="title:'Authentication Provider'" id="addAuthenticationProvider">
+ <form id="formAddAuthenticationProvider" method="post" dojoType="dijit.form.Form">
+ <table class="tableContainer-table tableContainer-table-horiz" width="100%" cellspacing="1">
+ <tr>
+ <td class="tableContainer-labelCell" style="width: 300px;">Type*:</td>
+ <td class="tableContainer-valueCell"><div id="addAuthenticationProvider.selectAuthenticationProviderDiv"></div></td>
+ </tr>
+ <tr>
+ <td class="tableContainer-labelCell" style="width: 300px;">Name*:</td>
+ <td class="tableContainer-valueCell"><input type="text" required="true" name="name"
+ id="formAddAuthenticationProvider.name" placeholder="Name"
+ dojoType="dijit.form.ValidationTextBox" missingMessage="A name must be supplied" /></div></td>
+ </tr>
+ </table>
+ <input type="hidden" id="formAddAuthenticationProvider.id" name="id"/>
+ <div id="addAuthenticationProvider.fieldSets"></div>
+ <!-- submit buttons -->
+ <input type="submit" value="Save Authentication Provider" label="Save Authentication Provider" dojoType="dijit.form.Button" />
+ </form>
+ </div>
+</div>
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js Mon Mar 11 18:29:45 2013
@@ -117,5 +117,10 @@ define(["dojo/_base/xhr"],
}
}
+ util.isProviderManagingUsers = function(type)
+ {
+ return (type === "PlainPasswordFileAuthenticationProvider" || type === "Base64MD5PasswordFileAuthenticationProvider");
+ };
+
return util;
});
\ No newline at end of file
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js Mon Mar 11 18:29:45 2013
@@ -27,10 +27,14 @@ define(["dojo/_base/xhr",
"qpid/common/util",
"qpid/common/UpdatableStore",
"dojox/grid/EnhancedGrid",
+ "qpid/management/addAuthenticationProvider",
+ "dojo/_base/event",
+ "dijit/registry",
+ "dojo/dom-style",
"dojox/grid/enhanced/plugins/Pagination",
"dojox/grid/enhanced/plugins/IndirectSelection",
"dojo/domReady!"],
- function (xhr, parser, query, connect, properties, updater, util, UpdatableStore, EnhancedGrid) {
+ function (xhr, parser, query, connect, properties, updater, util, UpdatableStore, EnhancedGrid, addAuthenticationProvider, event, registry, domStyle) {
function AuthenticationProvider(name, parent, controller) {
this.name = name;
@@ -55,29 +59,68 @@ define(["dojo/_base/xhr",
contentPane.containerNode.innerHTML = data;
parser.parse(contentPane.containerNode);
- that.authProviderAdapter = new AuthProviderUpdater(contentPane.containerNode, that.modelObj, that.controller);
+ that.authProviderUpdater = new AuthProviderUpdater(contentPane.containerNode, that.modelObj, that.controller, that);
- updater.add( that.authProviderAdapter );
+ updater.add( that.authProviderUpdater );
- that.authProviderAdapter.update();
+ that.authProviderUpdater.update();
+ var editButton = query(".editAuthenticationProviderButton", contentPane.containerNode)[0];
+ var editWidget = registry.byNode(editButton);
+ connect.connect(editWidget, "onClick",
+ function(evt){
+ event.stop(evt);
+ addAuthenticationProvider.show(that.name);
+ });
+
+ var deleteButton = query(".deleteAuthenticationProviderButton", contentPane.containerNode)[0];
+ var deleteWidget = registry.byNode(deleteButton);
+ connect.connect(deleteWidget, "onClick",
+ function(evt){
+ event.stop(evt);
+ that.deleteAuthenticationProvider();
+ });
}});
};
AuthenticationProvider.prototype.close = function() {
- updater.remove( this.authProviderAdapter );
+ updater.remove( this.authProviderUpdater);
+ if (this.authProviderUpdater.details)
+ {
+ updater.remove(this.authProviderUpdater.details.authDatabaseUpdater);
+ }
};
- function AuthProviderUpdater(node, authProviderObj, controller)
+ AuthenticationProvider.prototype.deleteAuthenticationProvider = function() {
+ if(confirm("Are you sure you want to delete authentication provider '" + this.name + "'?")) {
+ var query = "rest/authenticationprovider/" +encodeURIComponent(this.name);
+ this.success = true
+ var that = this;
+ xhr.del({url: query, sync: true, handleAs: "json"}).then(
+ function(data) {
+ that.close();
+ that.contentPane.onClose()
+ that.controller.tabContainer.removeChild(that.contentPane);
+ that.contentPane.destroyRecursive();
+ },
+ function(error) {that.success = false; that.failureReason = error;});
+ if(!this.success ) {
+ alert("Error:" + this.failureReason);
+ }
+ }
+ };
+
+ function AuthProviderUpdater(node, authProviderObj, controller, authenticationProvider)
{
this.controller = controller;
this.name = query(".name", node)[0];
this.type = query(".type", node)[0];
+ this.authenticationProvider = authenticationProvider;
/*this.state = dom.byId("state");
this.durable = dom.byId("durable");
this.lifetimePolicy = dom.byId("lifetimePolicy");
*/
- this.query = "rest/authenticationprovider/"+encodeURIComponent(authProviderObj.name);
+ this.query = "rest/authenticationprovider/" + encodeURIComponent(authProviderObj.name);
var that = this;
@@ -90,20 +133,28 @@ define(["dojo/_base/xhr",
that.updateHeader();
- require(["qpid/management/authenticationprovider/"+that.authProviderData.category],
- function(SpecificProvider) {
- that.details = new SpecificProvider(node, authProviderObj, controller);
- that.details.update();
- });
-
+ var editButton = query(".editAuthenticationProviderButton", node)[0];
+ var editWidget = registry.byNode(editButton);
+ var hideEdit = (that.authProviderData.type === 'AnonymousAuthenticationManager' || that.authProviderData.type === 'ExternalAuthenticationManager')
+ domStyle.set(editWidget.domNode, "display", hideEdit ? "none": "");
+
+ if (util.isProviderManagingUsers(that.authProviderData.type))
+ {
+ require(["qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager"],
+ function(PrincipalDatabaseAuthenticationManager) {
+ that.details = new PrincipalDatabaseAuthenticationManager(node, data[0], controller, that);
+ that.details.update();
+ });
+ }
});
}
AuthProviderUpdater.prototype.updateHeader = function()
{
+ this.authenticationProvider.name = this.authProviderData[ "name" ]
this.name.innerHTML = this.authProviderData[ "name" ];
- this.type.innerHTML = this.authProviderData[ "authenticationProviderType" ];
+ this.type.innerHTML = this.authProviderData[ "type" ];
/* this.state.innerHTML = this.brokerData[ "state" ];
this.durable.innerHTML = this.brokerData[ "durable" ];
this.lifetimePolicy.innerHTML = this.brokerData[ "lifetimePolicy" ];
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js Mon Mar 11 18:29:45 2013
@@ -27,10 +27,12 @@ define(["dojo/_base/xhr",
"qpid/common/util",
"qpid/common/UpdatableStore",
"dojox/grid/EnhancedGrid",
+ "dijit/registry",
+ "qpid/management/addAuthenticationProvider",
"dojox/grid/enhanced/plugins/Pagination",
"dojox/grid/enhanced/plugins/IndirectSelection",
"dojo/domReady!"],
- function (xhr, parser, query, connect, properties, updater, util, UpdatableStore, EnhancedGrid) {
+ function (xhr, parser, query, connect, properties, updater, util, UpdatableStore, EnhancedGrid, registry, addAuthenticationProvider) {
function Broker(name, parent, controller) {
this.name = name;
@@ -62,6 +64,20 @@ define(["dojo/_base/xhr",
that.brokerUpdater.update();
+ var addProviderButton = query(".addAuthenticationProvider", contentPane.containerNode)[0];
+ connect.connect(registry.byNode(addProviderButton), "onClick", function(evt){ addAuthenticationProvider.show(); });
+
+ var deleteProviderButton = query(".deleteAuthenticationProvider", contentPane.containerNode)[0];
+ connect.connect(registry.byNode(deleteProviderButton), "onClick",
+ function(evt){
+ util.deleteGridSelections(
+ that.brokerUpdater,
+ that.brokerUpdater.authenticationProvidersGrid.grid,
+ "rest/authenticationprovider",
+ "Are you sure you want to delete authentication provider");
+ }
+ );
+
}});
};
@@ -121,6 +137,36 @@ define(["dojo/_base/xhr",
});
});
+ var gridProperties = {
+ keepSelection: true,
+ plugins: {
+ indirectSelection: true
+ }};
+
+ that.authenticationProvidersGrid =
+ new UpdatableStore(that.brokerData.authenticationproviders, query(".broker-authentication-providers")[0],
+ [ { name: "Name", field: "name", width: "100%"},
+ { name: "Type", field: "type", width: "300px"},
+ { name: "User Management", field: "type", width: "200px",
+ formatter: function(val){
+ return "<input type='radio' disabled='disabled' "+(util.isProviderManagingUsers(val)?"checked='checked'": "")+" />";
+ }
+ },
+ { name: "Default", field: "name", width: "100px",
+ formatter: function(val){
+ return "<input type='radio' disabled='disabled' "+(val == that.brokerData.defaultAuthenticationProvider ? "checked='checked'": "")+" />";
+ }
+ }
+ ], function(obj) {
+ connect.connect(obj.grid, "onRowDblClick", obj.grid,
+ function(evt){
+ var idx = evt.rowIndex,
+ theItem = this.getItem(idx);
+ var name = obj.dataStore.getValue(theItem,"name");
+ that.controller.show("authenticationprovider", name, brokerObj);
+ });
+ }, gridProperties, EnhancedGrid);
+
});
xhr.get({url: "rest/logrecords", sync: properties.useSyncGet, handleAs: "json"})
@@ -186,7 +232,7 @@ define(["dojo/_base/xhr",
that.portsGrid.update(that.brokerData.ports);
-
+ that.authenticationProvidersGrid.update(that.brokerData.authenticationproviders);
});
Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js?rev=1455273&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js Mon Mar 11 18:29:45 2013
@@ -0,0 +1,268 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+define(["dojo/_base/xhr",
+ "dojo/dom",
+ "dojo/dom-construct",
+ "dojo/_base/window",
+ "dijit/registry",
+ "dojo/parser",
+ "dojo/_base/array",
+ "dojo/_base/event",
+ 'dojo/_base/json',
+ "dojo/store/Memory",
+ "dijit/form/FilteringSelect",
+ "dojo/_base/connect",
+ "dojo/dom-style",
+ /* dojox/ validate resources */
+ "dojox/validate/us", "dojox/validate/web",
+ /* basic dijit classes */
+ "dijit/Dialog",
+ "dijit/form/CheckBox", "dijit/form/Textarea",
+ "dijit/form/TextBox",
+ "dijit/form/ValidationTextBox",
+ "dijit/form/Button",
+ "dijit/form/Form",
+ /* basic dojox classes */
+ "dojox/form/BusyButton", "dojox/form/CheckedMultiSelect",
+ "dojox/layout/TableContainer",
+ "dojo/domReady!"],
+ function (xhr, dom, construct, win, registry, parser, array, event, json, Memory, FilteringSelect, connect, domStyle) {
+
+ var addAuthenticationProvider = {};
+
+ var node = construct.create("div", null, win.body(), "last");
+
+ var convertToAuthenticationProvider = function convertToAuthenticationProvider(formValues)
+ {
+ var newProvider = {};
+
+ newProvider.name = dijit.byId("formAddAuthenticationProvider.name").value;
+ newProvider.type = dijit.byId("authenticationProviderType").value;
+ var id = dojo.byId("formAddAuthenticationProvider.id").value;
+ if (id)
+ {
+ newProvider.id = id;
+ }
+ for(var propName in formValues)
+ {
+ if(formValues.hasOwnProperty(propName))
+ {
+ if(formValues[ propName ] !== "") {
+ newProvider[ propName ] = formValues[propName];
+ }
+
+ }
+ }
+ return newProvider;
+ }
+
+ var showFieldSets = function showFieldSets(providerType, fieldSets)
+ {
+ for(var key in fieldSets)
+ {
+ var layout = fieldSets[key];
+ var disabled = key != providerType;
+ var displayValue = key == providerType ? "block" : "none";
+ var widgets = layout.getDescendants();
+ array.forEach(widgets, function(widget)
+ {
+ widget.set("disabled", disabled);
+ });
+
+ domStyle.set(fieldSets[key].domNode, "display", displayValue);
+ }
+ if (fieldSets[providerType])
+ {
+ fieldSets[providerType].getParent().resize();
+ }
+ }
+
+ var getAuthenticationProviderWidgetId = function getAuthenticationProviderWidgetId(providerType, attribute)
+ {
+ return "ap_" + providerType + "Field" + attribute;
+ }
+
+ var loadProviderAndDisplayForm = function loadProviderAndDisplayForm(providerName, dialog)
+ {
+ if (providerName)
+ {
+ xhr.get({
+ url: "rest/authenticationprovider/" + encodeURIComponent(providerName),
+ handleAs: "json"
+ }).then(
+ function(data) {
+ var provider = data[0];
+ var providerType = provider.type;
+ var nameField = dijit.byId("formAddAuthenticationProvider.name");
+ nameField.set("value", provider.name);
+ nameField.set("disabled", true);
+ dialog.providerChooser.set("value", providerType);
+ dialog.providerChooser.set("disabled", true);
+ dojo.byId("formAddAuthenticationProvider.id").value=provider.id;
+ for(var attribute in provider)
+ {
+ if (provider.hasOwnProperty(attribute))
+ {
+ var widject = dijit.byId(getAuthenticationProviderWidgetId(providerType, attribute));
+ if (widject)
+ {
+ widject.set("value", provider[attribute]);
+ }
+ }
+ }
+ registry.byId("addAuthenticationProvider").show();
+ });
+ }
+ else
+ {
+ registry.byId("addAuthenticationProvider").show();
+ }
+ }
+
+ xhr.get({url: "addAuthenticationProvider.html",
+ sync: true,
+ load: function(data) {
+ var theForm;
+ node.innerHTML = data;
+ addAuthenticationProvider.dialogNode = dom.byId("addAuthenticationProvider");
+ parser.instantiate([addAuthenticationProvider.dialogNode]);
+ theForm = registry.byId("formAddAuthenticationProvider");
+ theForm.on("submit", function(e) {
+
+ event.stop(e);
+ if(theForm.validate()){
+
+ var newAuthenticationManager = convertToAuthenticationProvider(theForm.getValues());
+ var that = this;
+
+ xhr.put({url: "rest/authenticationprovider/" + encodeURIComponent(newAuthenticationManager.name),
+ sync: true, handleAs: "json",
+ headers: { "Content-Type": "application/json"},
+ putData: json.toJson(newAuthenticationManager),
+ load: function(x) {that.success = true; },
+ error: function(error) {that.success = false; that.failureReason = error;}});
+
+ if(this.success === true)
+ {
+ registry.byId("addAuthenticationProvider").hide();
+ }
+ else
+ {
+ alert("Error:" + this.failureReason);
+ }
+ return false;
+ }else{
+ alert('Form contains invalid data. Please correct first');
+ return false;
+ }
+ });
+ }});
+
+ addAuthenticationProvider.show = function(providerName) {
+ var that = this;
+ registry.byId("formAddAuthenticationProvider").reset();
+ dojo.byId("formAddAuthenticationProvider.id").value="";
+ registry.byId("formAddAuthenticationProvider.name").set("disabled", false);
+ if (this.providerChooser)
+ {
+ this.providerChooser.set("disabled", false);
+ }
+
+ if (!that.hasOwnProperty("providerFieldSets"))
+ {
+ xhr.get({
+ url: "rest/helper?action=ListAuthenticationProviderAttributes",
+ handleAs: "json"
+ }).then(
+ function(data) {
+ var providers = [];
+ var providerIndex = 0;
+ that.providerFieldSetsContainer = dom.byId("addAuthenticationProvider.fieldSets");
+ that.providerFieldSets = [];
+
+ for (var providerType in data) {
+ if (data.hasOwnProperty(providerType)) {
+ providers[providerIndex++] = {id: providerType, name: providerType};
+
+ var attributes = data[providerType].attributes;
+ var resources = data[providerType].descriptions;
+ var layout = new dojox.layout.TableContainer( {
+ id: providerType + "FieldSet",
+ cols: 1,
+ "labelWidth": "300",
+ showLabels: true,
+ orientation: "horiz"
+ });
+ for(var i=0; i < attributes.length; i++) {
+ if ("type" == attributes[i])
+ {
+ continue;
+ }
+ var labelValue = attributes[i];
+ if (resources && resources[attributes[i]])
+ {
+ labelValue = resources[attributes[i]];
+ }
+ var text = new dijit.form.TextBox({
+ label: labelValue + ":",
+ id: getAuthenticationProviderWidgetId(providerType, attributes[i]),
+ name: attributes[i]
+ });
+ layout.addChild(text);
+ }
+ layout.placeAt("addAuthenticationProvider.fieldSets");
+ that.providerFieldSets[providerType]=layout;
+ layout.startup();
+ }
+ }
+
+ var providersStore = new Memory({ data: providers });
+ if(that.providerChooser) {
+ that.providerChooser.destroy( false );
+ }
+
+ var providersDiv = dom.byId("addAuthenticationProvider.selectAuthenticationProviderDiv");
+ var input = construct.create("input", {id: "addAuthenticationProviderType"}, providersDiv);
+
+ that.providerChooser = new FilteringSelect({ id: "authenticationProviderType",
+ name: "type",
+ store: providersStore,
+ searchAttr: "name"}, input);
+ connect.connect(that.providerChooser, "onChange",
+ function(event)
+ {
+ showFieldSets(that.providerChooser.value, that.providerFieldSets);
+ }
+ );
+ var providerType = providers[0].name;
+ that.providerChooser.set("value", providerType);
+ showFieldSets(providerType, that.providerFieldSets);
+ loadProviderAndDisplayForm(providerName, that)
+ });
+ }
+ else
+ {
+ loadProviderAndDisplayForm(providerName, that);
+ }
+ }
+
+ return addAuthenticationProvider;
+ });
\ No newline at end of file
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js Mon Mar 11 18:29:45 2013
@@ -44,7 +44,7 @@ define(["dojo/_base/xhr",
"dijit/form/DateTextBox",
"dojo/domReady!"],
function (xhr, dom, parser, query, construct, connect, win, event, json, registry, util, properties, updater, UpdatableStore, EnhancedGrid) {
- function DatabaseAuthManager(containerNode, authProviderObj, controller) {
+ function DatabaseAuthManager(containerNode, authProviderObj, controller, authenticationManagerUpdater) {
var node = construct.create("div", null, containerNode, "last");
var that = this;
this.name = authProviderObj.name;
@@ -55,8 +55,7 @@ define(["dojo/_base/xhr",
parser.parse(node);
- that.authDatabaseUpdater= new AuthProviderUpdater(node, authProviderObj, controller);
-
+ that.authDatabaseUpdater= new AuthProviderUpdater(node, authProviderObj, controller, authenticationManagerUpdater);
updater.add( that.authDatabaseUpdater);
that.authDatabaseUpdater.update();
@@ -73,17 +72,18 @@ define(["dojo/_base/xhr",
updater.remove( this.authDatabaseUpdater );
};
- function AuthProviderUpdater(node, authProviderObj, controller)
+ function AuthProviderUpdater(node, authProviderObj, controller, authenticationManagerUpdater)
{
this.controller = controller;
- this.query = "rest/authenticationprovider/"+encodeURIComponent(authProviderObj.name);
+ this.query = "rest/authenticationprovider?id="+encodeURIComponent(authProviderObj.id);
this.name = authProviderObj.name;
+ this.authenticationManagerUpdater = authenticationManagerUpdater;
var that = this;
xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"})
.then(function(data) {
that.authProviderData = data[0];
-
+ that.name = data[0].name
util.flattenStatistics( that.authProviderData );
var userDiv = query(".users")[0];
@@ -116,13 +116,13 @@ define(["dojo/_base/xhr",
theItem = this.getItem(idx);
var name = obj.dataStore.getValue(theItem,"name");
var id = obj.dataStore.getValue(theItem,"id");
- setPassword.show(authProviderObj.name, {name: name, id: id});
+ setPassword.show(that.name, {name: name, id: id});
});
}, gridProperties, EnhancedGrid);
var addUserButton = query(".addUserButton", node)[0];
- connect.connect(registry.byNode(addUserButton), "onClick", function(evt){ addUser.show(authProviderObj.name) });
+ connect.connect(registry.byNode(addUserButton), "onClick", function(evt){ addUser.show(that.name) });
var deleteMessagesButton = query(".deleteUserButton", node)[0];
var deleteWidget = registry.byNode(deleteMessagesButton);
@@ -176,10 +176,13 @@ define(["dojo/_base/xhr",
xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"})
.then(function(data) {
that.authProviderData = data[0];
+ that.name = data[0].name
util.flattenStatistics( that.authProviderData );
that.usersGrid.update(that.authProviderData.users);
+ that.authenticationManagerUpdater.authProviderData = data[0];
+ that.authenticationManagerUpdater.updateHeader();
});
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showAuthProvider.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showAuthProvider.html?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showAuthProvider.html (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showAuthProvider.html Mon Mar 11 18:29:45 2013
@@ -22,4 +22,7 @@
<span style="">Name:</span><span class="name" style="position:absolute; left:6em"></span>
<br/>
<span style="">Type:</span><span class="type" style="position:absolute; left:6em"></span>
+ <br/>
+ <button data-dojo-type="dijit.form.Button" class="editAuthenticationProviderButton">Edit</button>
+ <button data-dojo-type="dijit.form.Button" class="deleteAuthenticationProviderButton">Delete</button>
</div>
\ No newline at end of file
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html Mon Mar 11 18:29:45 2013
@@ -36,7 +36,12 @@
<div class="broker-ports"></div>
</div>
<br/>
-
+ <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Authentication Providers'">
+ <div class="broker-authentication-providers"></div>
+ <button data-dojo-type="dijit.form.Button" class="addAuthenticationProvider">Add Provider</button>
+ <button data-dojo-type="dijit.form.Button" class="deleteAuthenticationProvider">Delete Provider</button>
+ </div>
+ <br/>
<div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Log File', open: false">
<div class="broker-logfile"></div>
</div>
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java Mon Mar 11 18:29:45 2013
@@ -39,8 +39,8 @@ public interface AuthenticationProvider
public static final String TIME_TO_LIVE = "timeToLive";
public static final String CREATED = "created";
public static final String UPDATED = "updated";
- public static final String CATEGORY = "category";
- public static final String TYPE = "authenticationProviderType";
+
+ public static final String TYPE = "type";
public static final Collection<String> AVAILABLE_ATTRIBUTES =
Collections.unmodifiableList(
@@ -53,8 +53,8 @@ public interface AuthenticationProvider
TIME_TO_LIVE,
CREATED,
UPDATED,
- CATEGORY,
- TYPE));
+ TYPE
+ ));
//children
Collection<VirtualHostAlias> getVirtualHostPortBindings();
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Broker.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Broker.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Broker.java Mon Mar 11 18:29:45 2013
@@ -44,6 +44,7 @@ public interface Broker extends Configur
String PROCESS_PID = "processPid";
String PRODUCT_VERSION = "productVersion";
String SUPPORTED_STORE_TYPES = "supportedStoreTypes";
+ String SUPPORTED_AUTHENTICATION_PROVIDERS = "supportedAuthenticationProviders";
String CREATED = "created";
String DURABLE = "durable";
String ID = "id";
@@ -103,6 +104,7 @@ public interface Broker extends Configur
PROCESS_PID,
PRODUCT_VERSION,
SUPPORTED_STORE_TYPES,
+ SUPPORTED_AUTHENTICATION_PROVIDERS,
CREATED,
DURABLE,
ID,
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java Mon Mar 11 18:29:45 2013
@@ -69,14 +69,16 @@ public abstract class AuthenticationProv
private GroupPrincipalAccessor _groupAccessor;
- protected String _category;
+ protected Collection<String> _supportedAttributes;
+ Map<String, AuthenticationManagerFactory> _factories;
- private AuthenticationProviderAdapter(UUID id, Broker broker, final T authManager, Map<String, Object> attributes)
+ private AuthenticationProviderAdapter(UUID id, Broker broker, final T authManager, Map<String, Object> attributes, Collection<String> attributeNames)
{
super(id, null, attributes, broker.getTaskExecutor());
_authManager = authManager;
_broker = broker;
- _category = authManager instanceof PrincipalDatabaseAuthenticationManager? PrincipalDatabaseAuthenticationManager.class.getSimpleName() : AuthenticationManager.class.getSimpleName() ;
+ _supportedAttributes = createSupportedAttributes(attributeNames);
+ _factories = getAuthenticationManagerFactories();
addParent(Broker.class, broker);
}
@@ -156,17 +158,13 @@ public abstract class AuthenticationProv
@Override
public Collection<String> getAttributeNames()
{
- return AuthenticationProvider.AVAILABLE_ATTRIBUTES;
+ return _supportedAttributes;
}
@Override
public Object getAttribute(String name)
{
- if(CATEGORY.equals(name))
- {
- return _category;
- }
- else if(CREATED.equals(name))
+ if(CREATED.equals(name))
{
// TODO
}
@@ -224,7 +222,6 @@ public abstract class AuthenticationProv
throw new IntegrityViolationException("Authentication provider '" + providerName + "' is set on port " + port.getName());
}
}
-
return true;
}
else if(desiredState == State.ACTIVE)
@@ -255,28 +252,74 @@ public abstract class AuthenticationProv
_groupAccessor = groupAccessor;
}
- public AuthenticationManager createAuthenticationManager(Map<String, Object> attributes)
+ @Override
+ protected void changeAttributes(Map<String, Object> attributes)
+ {
+ AuthenticationManager manager = validateAttributes(attributes);
+ manager.initialise();
+ _authManager = (T)manager;
+ String type = (String)attributes.get(AuthenticationManagerFactory.ATTRIBUTE_TYPE);
+ AuthenticationManagerFactory managerFactory = _factories.get(type);
+ _supportedAttributes = createSupportedAttributes(managerFactory.getAttributeNames());
+ super.changeAttributes(attributes);
+ }
+
+ private Map<String, AuthenticationManagerFactory> getAuthenticationManagerFactories()
{
QpidServiceLoader<AuthenticationManagerFactory> loader = new QpidServiceLoader<AuthenticationManagerFactory>();
Iterable<AuthenticationManagerFactory> factories = loader.atLeastOneInstanceOf(AuthenticationManagerFactory.class);
+ Map<String, AuthenticationManagerFactory> factoryMap = new HashMap<String, AuthenticationManagerFactory>();
for (AuthenticationManagerFactory factory : factories)
{
- AuthenticationManager manager = factory.createInstance(attributes);
- if (manager != null)
- {
- return manager;
- }
+ factoryMap.put(factory.getType(), factory);
}
- return null;
+ return factoryMap;
+ }
+
+ protected Collection<String> createSupportedAttributes(Collection<String> factoryAttributes)
+ {
+ List<String> attributesNames = new ArrayList<String>(AVAILABLE_ATTRIBUTES);
+ if (factoryAttributes != null)
+ {
+ attributesNames.addAll(factoryAttributes);
+ }
+ return Collections.unmodifiableCollection(attributesNames);
+ }
+
+ protected AuthenticationManager validateAttributes(Map<String, Object> attributes)
+ {
+ String newName = (String)attributes.get(NAME);
+ String currentName = getName();
+ if (!currentName.equals(newName))
+ {
+ throw new IllegalConfigurationException("Changing the name of authentication provider is not supported");
+ }
+ String newType = (String)attributes.get(AuthenticationManagerFactory.ATTRIBUTE_TYPE);
+ String currentType = (String)getAttribute(AuthenticationManagerFactory.ATTRIBUTE_TYPE);
+ if (!currentType.equals(newType))
+ {
+ throw new IllegalConfigurationException("Changing the type of authentication provider is not supported");
+ }
+ AuthenticationManagerFactory managerFactory = _factories.get(newType);
+ if (managerFactory == null)
+ {
+ throw new IllegalConfigurationException("Cannot find authentication provider factory for type " + newType);
+ }
+ AuthenticationManager manager = managerFactory.createInstance(attributes);
+ if (manager == null)
+ {
+ throw new IllegalConfigurationException("Cannot change authentication provider " + newName + " of type " + newType + " with the given attributes");
+ }
+ return manager;
}
public static class SimpleAuthenticationProviderAdapter extends AuthenticationProviderAdapter<AuthenticationManager>
{
public SimpleAuthenticationProviderAdapter(
- UUID id, Broker broker, AuthenticationManager authManager, Map<String, Object> attributes)
+ UUID id, Broker broker, AuthenticationManager authManager, Map<String, Object> attributes, Collection<String> attributeNames)
{
- super(id, broker,authManager, attributes);
+ super(id, broker,authManager, attributes, attributeNames);
}
@Override
@@ -287,21 +330,7 @@ public abstract class AuthenticationProv
throw new UnsupportedOperationException();
}
- @Override
- protected void changeAttributes(Map<String, Object> attributes)
- {
- AuthenticationManager manager = createAuthenticationManager(attributes);
- if (manager == null)
- {
- throw new IllegalConfigurationException("Cannot create authentication manager from " + attributes);
- }
- if (manager instanceof PrincipalDatabaseAuthenticationManager)
- {
- throw new IllegalConfigurationException("Cannot change the category of the authentication provider");
- }
- _authManager = manager;
- super.changeAttributes(attributes);
- }
+
}
@@ -310,9 +339,9 @@ public abstract class AuthenticationProv
implements PasswordCredentialManagingAuthenticationProvider
{
public PrincipalDatabaseAuthenticationManagerAdapter(
- UUID id, Broker broker, PrincipalDatabaseAuthenticationManager authManager, Map<String, Object> attributes)
+ UUID id, Broker broker, PrincipalDatabaseAuthenticationManager authManager, Map<String, Object> attributes, Collection<String> attributeNames)
{
- super(id, broker, authManager, attributes);
+ super(id, broker, authManager, attributes, attributeNames);
}
@Override
@@ -333,7 +362,6 @@ public abstract class AuthenticationProv
{
if(getSecurityManager().authoriseUserOperation(Operation.DELETE, username))
{
-
getPrincipalDatabase().deletePrincipal(new UsernamePrincipal(username));
}
else
@@ -431,19 +459,15 @@ public abstract class AuthenticationProv
}
@Override
- protected void changeAttributes(Map<String, Object> attributes)
+ protected void childAdded(ConfiguredObject child)
{
- AuthenticationManager manager = createAuthenticationManager(attributes);
- if (manager == null)
- {
- throw new IllegalConfigurationException("Cannot create authentication manager from " + attributes);
- }
- if (!(manager instanceof PrincipalDatabaseAuthenticationManager))
- {
- throw new IllegalConfigurationException("Cannot change the category of the authentication provider");
- }
- _authManager = (PrincipalDatabaseAuthenticationManager)manager;
- super.changeAttributes(attributes);
+ // no-op, prevent storing users in the broker store
+ }
+
+ @Override
+ protected void childRemoved(ConfiguredObject child)
+ {
+ // no-op, as per above, users are not in the store
}
private class PrincipalAdapter extends AbstractAdapter implements User
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java Mon Mar 11 18:29:45 2013
@@ -20,6 +20,10 @@
*/
package org.apache.qpid.server.model.adapter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
import java.util.Map;
import java.util.UUID;
@@ -36,10 +40,17 @@ import org.apache.qpid.server.model.adap
public class AuthenticationProviderFactory
{
private final Iterable<AuthenticationManagerFactory> _factories;
+ private Collection<String> _supportedAuthenticationProviders;
public AuthenticationProviderFactory(QpidServiceLoader<AuthenticationManagerFactory> authManagerFactoryServiceLoader)
{
_factories = authManagerFactoryServiceLoader.atLeastOneInstanceOf(AuthenticationManagerFactory.class);
+ List<String> supportedAuthenticationProviders = new ArrayList<String>();
+ for (AuthenticationManagerFactory factory : _factories)
+ {
+ supportedAuthenticationProviders.add(factory.getType());
+ }
+ _supportedAuthenticationProviders = Collections.unmodifiableCollection(supportedAuthenticationProviders);
}
/**
@@ -60,11 +71,11 @@ public class AuthenticationProviderFacto
if (manager instanceof PrincipalDatabaseAuthenticationManager)
{
authenticationProvider = new PrincipalDatabaseAuthenticationManagerAdapter(id, broker,
- (PrincipalDatabaseAuthenticationManager) manager, attributes);
+ (PrincipalDatabaseAuthenticationManager) manager, attributes, factory.getAttributeNames());
}
else
{
- authenticationProvider = new SimpleAuthenticationProviderAdapter(id, broker, manager, attributes);
+ authenticationProvider = new SimpleAuthenticationProviderAdapter(id, broker, manager, attributes, factory.getAttributeNames());
}
authenticationProvider.setGroupAccessor(groupPrincipalAccessor);
return authenticationProvider;
@@ -74,4 +85,8 @@ public class AuthenticationProviderFacto
throw new IllegalArgumentException("No authentication provider factory found for configuration attributes " + attributes);
}
+ public Collection<String> getSupportedAuthenticationProviders()
+ {
+ return _supportedAuthenticationProviders;
+ }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Mon Mar 11 18:29:45 2013
@@ -55,6 +55,8 @@ import org.apache.qpid.server.model.Trus
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
+import org.apache.qpid.server.security.auth.manager.Base64MD5PasswordFileAuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory;
import org.apache.qpid.server.security.group.FileGroupManager;
import org.apache.qpid.server.security.group.GroupManager;
import org.apache.qpid.server.security.group.GroupPrincipalAccessor;
@@ -152,7 +154,7 @@ public class BrokerAdapter extends Abstr
private final Map<String, VirtualHost> _vhostAdapters = new HashMap<String, VirtualHost>();
private final Map<Integer, Port> _portAdapters = new HashMap<Integer, Port>();
- private final Map<String, AuthenticationProvider> _authenticationProviders = new HashMap<String, AuthenticationProvider>();
+ private final Map<UUID, AuthenticationProvider> _authenticationProviders = new HashMap<UUID, AuthenticationProvider>();
private final Map<String, GroupProvider> _groupProviders = new HashMap<String, GroupProvider>();
private final Map<UUID, ConfiguredObject> _plugins = new HashMap<UUID, ConfiguredObject>();
private final Map<UUID, KeyStore> _keyStores = new HashMap<UUID, KeyStore>();
@@ -456,11 +458,46 @@ public class BrokerAdapter extends Abstr
private AuthenticationProvider createAuthenticationProvider(Map<String, Object> attributes)
{
- // it's cheap to create the groupPrincipalAccessor on the fly
- GroupPrincipalAccessor groupPrincipalAccessor = new GroupPrincipalAccessor(_groupProviders.values());
+ String type = (String)attributes.get(AuthenticationProvider.TYPE);
+ if (type == null)
+ {
+ throw new IllegalConfigurationException("Authentication provider type is not specified");
+ }
+
+ AuthenticationProvider authenticationProvider = null;
+ synchronized (_authenticationProviders)
+ {
+ // a temporary restriction to prevent creation of several instances
+ // of PlainPasswordFileAuthenticationProvider/Base64MD5PasswordFileAuthenticationProvider
+ // due to current limitation of JMX management which cannot cope
+ // with several user management MBeans as MBEan type is used as a name.
+
+ // TODO: Remove this check after fixing the JMX management
+ if (type.equals(PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE)
+ || type.equals(Base64MD5PasswordFileAuthenticationManagerFactory.PROVIDER_TYPE))
+ {
+
+ for (AuthenticationProvider provider : _authenticationProviders.values())
+ {
+ String providerType = (String) provider.getAttribute(AuthenticationProvider.TYPE);
+ if (providerType.equals(PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE)
+ || providerType.equals(Base64MD5PasswordFileAuthenticationManagerFactory.PROVIDER_TYPE))
+ {
+ throw new IllegalConfigurationException("Authentication provider managing users alredy exists ["
+ + provider.getName() + "]. Only one instance is allowed.");
+ }
+ }
+
+ }
- AuthenticationProvider authenticationProvider = _authenticationProviderFactory.create(UUID.randomUUID(), this, attributes, groupPrincipalAccessor);
- addAuthenticationProvider(authenticationProvider);
+ // it's cheap to create the groupPrincipalAccessor on the fly
+ GroupPrincipalAccessor groupPrincipalAccessor = new GroupPrincipalAccessor(_groupProviders.values());
+
+ authenticationProvider = _authenticationProviderFactory.create(UUID.randomUUID(), this, attributes,
+ groupPrincipalAccessor);
+ addAuthenticationProvider(authenticationProvider);
+ }
+ authenticationProvider.setDesiredState(State.INITIALISING, State.ACTIVE);
return authenticationProvider;
}
@@ -472,11 +509,18 @@ public class BrokerAdapter extends Abstr
String name = authenticationProvider.getName();
synchronized (_authenticationProviders)
{
- if(_authenticationProviders.containsKey(name))
+ if (_authenticationProviders.containsKey(authenticationProvider.getId()))
{
- throw new IllegalConfigurationException("Cannot add AuthenticationProvider because one with name " + name + " already exists");
+ throw new IllegalConfigurationException("Cannot add AuthenticationProvider because one with id " + authenticationProvider.getId() + " already exists");
}
- _authenticationProviders.put(name, authenticationProvider);
+ for (AuthenticationProvider provider : _authenticationProviders.values())
+ {
+ if (provider.getName().equals(name))
+ {
+ throw new IllegalConfigurationException("Cannot add AuthenticationProvider because one with name " + name + " already exists");
+ }
+ }
+ _authenticationProviders.put(authenticationProvider.getId(), authenticationProvider);
}
authenticationProvider.addChangeListener(this);
}
@@ -604,6 +648,10 @@ public class BrokerAdapter extends Abstr
{
// TODO
}
+ else if(SUPPORTED_AUTHENTICATION_PROVIDERS.equals(name))
+ {
+ return _authenticationProviderFactory.getSupportedAuthenticationProviders();
+ }
else if (DEFAULT_AUTHENTICATION_PROVIDER.equals(name))
{
return _defaultAuthenticationProvider == null ? null : _defaultAuthenticationProvider.getName();
@@ -634,7 +682,7 @@ public class BrokerAdapter extends Abstr
AuthenticationProvider removedAuthenticationProvider = null;
synchronized (_authenticationProviders)
{
- removedAuthenticationProvider = _authenticationProviders.remove(authenticationProvider.getName());
+ removedAuthenticationProvider = _authenticationProviders.remove(authenticationProvider.getId());
}
return removedAuthenticationProvider != null;
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/AuthenticationManagerFactory.java Mon Mar 11 18:29:45 2013
@@ -18,14 +18,41 @@
*/
package org.apache.qpid.server.plugin;
+import java.util.Collection;
import java.util.Map;
+import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
-
public interface AuthenticationManagerFactory
{
- public static final String ATTRIBUTE_TYPE = "authenticationProviderType";
+ public static final String ATTRIBUTE_TYPE = AuthenticationProvider.TYPE;
+
+ /**
+ * Returns the authentication provider type
+ * @return authentication provider type
+ */
+ String getType();
+ /**
+ * Creates authentication manager from the provided attributes
+ *
+ * @param attributes
+ * attributes to create authentication manager
+ * @return authentication manager instance
+ */
AuthenticationManager createInstance(Map<String, Object> attributes);
+
+ /**
+ * Get the names of attributes the authentication manager which can be passed into {@link #createInstance(Map)} to create the
+ * authentication manager
+ *
+ * @return the collection of attribute names
+ */
+ Collection<String> getAttributeNames();
+
+ /**
+ * @return returns human readable descriptions for the attributes
+ */
+ Map<String, String> getAttributeDescriptions();
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java Mon Mar 11 18:29:45 2013
@@ -20,6 +20,9 @@
package org.apache.qpid.server.security.auth.manager;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
import org.apache.log4j.Logger;
@@ -33,10 +36,16 @@ import org.apache.qpid.server.security.a
*/
public abstract class AbstractPrincipalDatabaseAuthManagerFactory implements AuthenticationManagerFactory
{
+ public static final String RESOURCE_BUNDLE = "org.apache.qpid.server.security.auth.manager.PasswordFileAuthenticationProviderAttributeDescriptions";
public static final String ATTRIBUTE_PATH = "path";
private static final Logger LOGGER = Logger.getLogger(AbstractPrincipalDatabaseAuthManagerFactory.class);
+ public static final Collection<String> ATTRIBUTES = Collections.unmodifiableList(Arrays.asList(
+ ATTRIBUTE_TYPE,
+ ATTRIBUTE_PATH));
+
+
@Override
public AuthenticationManager createInstance(Map<String, Object> attributes)
{
@@ -65,7 +74,11 @@ public abstract class AbstractPrincipalD
return new PrincipalDatabaseAuthenticationManager(principalDatabase);
}
- abstract String getType();
-
abstract PrincipalDatabase createPrincipalDatabase();
+
+ @Override
+ public Collection<String> getAttributeNames()
+ {
+ return ATTRIBUTES;
+ }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java Mon Mar 11 18:29:45 2013
@@ -19,6 +19,8 @@
*/
package org.apache.qpid.server.security.auth.manager;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
@@ -37,4 +39,21 @@ public class AnonymousAuthenticationMana
return null;
}
+ @Override
+ public Collection<String> getAttributeNames()
+ {
+ return Collections.<String>singletonList(ATTRIBUTE_TYPE);
+ }
+
+ @Override
+ public String getType()
+ {
+ return PROVIDER_TYPE;
+ }
+
+ @Override
+ public Map<String, String> getAttributeDescriptions()
+ {
+ return null;
+ }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java Mon Mar 11 18:29:45 2013
@@ -20,15 +20,18 @@
*/
package org.apache.qpid.server.security.auth.manager;
+import java.util.Map;
+
import org.apache.qpid.server.security.auth.database.Base64MD5PasswordFilePrincipalDatabase;
import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
+import org.apache.qpid.server.util.ResourceBundleLoader;
public class Base64MD5PasswordFileAuthenticationManagerFactory extends AbstractPrincipalDatabaseAuthManagerFactory
{
public static final String PROVIDER_TYPE = "Base64MD5PasswordFileAuthenticationProvider";
@Override
- String getType()
+ public String getType()
{
return PROVIDER_TYPE;
}
@@ -39,4 +42,10 @@ public class Base64MD5PasswordFileAuthen
return new Base64MD5PasswordFilePrincipalDatabase();
}
+ @Override
+ public Map<String, String> getAttributeDescriptions()
+ {
+ return ResourceBundleLoader.getResources(RESOURCE_BUNDLE);
+ }
+
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java Mon Mar 11 18:29:45 2013
@@ -19,6 +19,8 @@
*/
package org.apache.qpid.server.security.auth.manager;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
@@ -37,4 +39,22 @@ public class ExternalAuthenticationManag
return null;
}
+ @Override
+ public Collection<String> getAttributeNames()
+ {
+ return Collections.<String>singletonList(ATTRIBUTE_TYPE);
+ }
+
+ @Override
+ public String getType()
+ {
+ return PROVIDER_TYPE;
+ }
+
+ @Override
+ public Map<String, String> getAttributeDescriptions()
+ {
+ return null;
+ }
+
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java?rev=1455273&r1=1455272&r2=1455273&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java Mon Mar 11 18:29:45 2013
@@ -19,6 +19,8 @@
*/
package org.apache.qpid.server.security.auth.manager;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
@@ -36,4 +38,22 @@ public class KerberosAuthenticationManag
}
return null;
}
+
+ @Override
+ public Collection<String> getAttributeNames()
+ {
+ return Collections.<String>singletonList(ATTRIBUTE_TYPE);
+ }
+
+ @Override
+ public String getType()
+ {
+ return PROVIDER_TYPE;
+ }
+
+ @Override
+ public Map<String, String> getAttributeDescriptions()
+ {
+ return null;
+ }
}
Added: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PasswordFileAuthenticationProviderAttributeDescriptions.properties
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PasswordFileAuthenticationProviderAttributeDescriptions.properties?rev=1455273&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PasswordFileAuthenticationProviderAttributeDescriptions.properties (added)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PasswordFileAuthenticationProviderAttributeDescriptions.properties Mon Mar 11 18:29:45 2013
@@ -0,0 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+path=File location*
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org