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 2013/04/23 21:12:28 UTC
svn commit: r1471100 [2/2] - in /qpid/branches/QPID-4659/qpid/java: ./
amqp-1-0-client-jms/ amqp-1-0-client/ amqp-1-0-common/
broker-plugins/management-http/src/main/java/resources/
broker-plugins/management-http/src/main/java/resources/js/qpid/common/...
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java Tue Apr 23 19:12:27 2013
@@ -538,8 +538,6 @@ public class GroupProviderAdapter extend
return true;
}
// TODO: DELETE state is ignored for now
- // in case if we need to delete group provider, then we need AuthenticationProvider to be a change listener of it
- // in order to remove deleted group provider from its group provider list
return false;
}
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java Tue Apr 23 19:12:27 2013
@@ -48,6 +48,7 @@ import org.apache.qpid.server.model.Virt
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.util.MapValueConverter;
import org.apache.qpid.server.util.ParameterizedTypeImpl;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
public class PortAdapter extends AbstractAdapter implements Port
@@ -72,11 +73,6 @@ public class PortAdapter extends Abstrac
private AuthenticationProvider _authenticationProvider;
private AtomicReference<State> _state;
- /*
- * TODO register PortAceptor as a listener. For supporting multiple
- * protocols on the same port we need to introduce a special entity like
- * PortAceptor which will be responsible for port binding/unbinding
- */
public PortAdapter(UUID id, Broker broker, Map<String, Object> attributes, Map<String, Object> defaults, TaskExecutor taskExecutor)
{
super(id, defaults, MapValueConverter.convert(attributes, ATTRIBUTE_TYPES), taskExecutor);
@@ -362,7 +358,67 @@ public class PortAdapter extends Abstrac
{
throw new IllegalStateException("Cannot change attributes for an active port outside of Management Mode");
}
- super.changeAttributes(MapValueConverter.convert(attributes, ATTRIBUTE_TYPES));
+ Map<String, Object> converted = MapValueConverter.convert(attributes, ATTRIBUTE_TYPES);
+
+ Map<String, Object> merged = new HashMap<String, Object>(getDefaultAttributes());
+ merged.putAll(getActualAttributes());
+ merged.putAll(converted);
+
+ @SuppressWarnings("unchecked")
+ Collection<Transport> transports = (Collection<Transport>)merged.get(TRANSPORTS);
+ @SuppressWarnings("unchecked")
+ Collection<Protocol> protocols = (Collection<Protocol>)merged.get(PROTOCOLS);
+ Boolean needClientCertificate = (Boolean)merged.get(NEED_CLIENT_AUTH);
+ Boolean wantClientCertificate = (Boolean)merged.get(WANT_CLIENT_AUTH);
+ boolean requiresCertificate = (needClientCertificate != null && needClientCertificate.booleanValue())
+ || (wantClientCertificate != null && wantClientCertificate.booleanValue());
+
+ if (transports != null && transports.contains(Transport.SSL))
+ {
+ if (_broker.getKeyStores().isEmpty())
+ {
+ throw new IllegalConfigurationException("Can't create port which requires SSL as the broker has no keystore configured.");
+ }
+
+ if (_broker.getTrustStores().isEmpty() && requiresCertificate)
+ {
+ throw new IllegalConfigurationException("Can't create port which requests SSL client certificates as the broker has no trust/peer stores configured.");
+ }
+ }
+ else
+ {
+ if (requiresCertificate)
+ {
+ throw new IllegalConfigurationException("Can't create port which requests SSL client certificates but doesn't use SSL transport.");
+ }
+ }
+
+ if (protocols != null && protocols.contains(Protocol.HTTPS) && _broker.getKeyStores().isEmpty())
+ {
+ throw new IllegalConfigurationException("Can't create port which requires SSL as the broker has no keystore configured.");
+ }
+
+ String authenticationProviderName = (String)merged.get(AUTHENTICATION_PROVIDER);
+ if (authenticationProviderName != null)
+ {
+ Collection<AuthenticationProvider> providers = _broker.getAuthenticationProviders();
+ AuthenticationProvider provider = null;
+ for (AuthenticationProvider p : providers)
+ {
+ if (p.getName().equals(authenticationProviderName))
+ {
+ provider = p;
+ break;
+ }
+ }
+
+ if (provider == null)
+ {
+ throw new IllegalConfigurationException("Cannot find authentication provider with name '"
+ + authenticationProviderName + "'");
+ }
+ }
+ super.changeAttributes(converted);
}
@Override
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java Tue Apr 23 19:12:27 2013
@@ -108,13 +108,12 @@ public class PortFactory
boolean useClientAuth = (Boolean) port.getAttribute(Port.NEED_CLIENT_AUTH) || (Boolean) port.getAttribute(Port.WANT_CLIENT_AUTH);
if(useClientAuth && broker.getTrustStores().isEmpty())
{
- throw new IllegalConfigurationException("Cant create port which requests SSL client certificates as the broker has no trust/peer stores configured.");
+ throw new IllegalConfigurationException("Can't create port which requests SSL client certificates as the broker has no trust/peer stores configured.");
}
- boolean doesntUseSSL = port.getTransports().isEmpty() || !port.getTransports().contains(Transport.SSL);
- if(useClientAuth && doesntUseSSL)
+ if(useClientAuth && !port.getTransports().contains(Transport.SSL))
{
- throw new IllegalConfigurationException("Cant create port which requests SSL client certificates but doesnt use SSL transport.");
+ throw new IllegalConfigurationException("Can't create port which requests SSL client certificates but doesn't use SSL transport.");
}
}
else
@@ -136,7 +135,7 @@ public class PortFactory
Collection<Protocol> portProtocols = existingPort.getProtocols();
if (portProtocols != null && portProtocols.contains(protocol))
{
- throw new IllegalConfigurationException("Port for protocol " + protocol + " already exist. Only one management port per protocol can be created");
+ throw new IllegalConfigurationException("Port for protocol " + protocol + " already exists. Only one management port per protocol can be created.");
}
}
}
@@ -149,7 +148,7 @@ public class PortFactory
{
if(broker.getKeyStores().isEmpty())
{
- throw new IllegalConfigurationException("Cant create port which requires SSL as the broker has no keystore configured.");
+ throw new IllegalConfigurationException("Can't create port which requires SSL as the broker has no keystore configured.");
}
}
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java Tue Apr 23 19:12:27 2013
@@ -835,7 +835,7 @@ public final class VirtualHostAdapter ex
{
return _virtualHost.getConfiguration().getHousekeepingCheckPeriod();
}
- else if(MAXIMUM_DELIVERY_ATTEMPTS.equals(name))
+ else if(QUEUE_MAXIMUM_DELIVERY_ATTEMPTS.equals(name))
{
return _virtualHost.getConfiguration().getMaxDeliveryCount();
}
Propchange: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v0_8/SubscriptionImpl.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v0_8/SubscriptionImpl.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/SubscriptionImpl.java:r1461895-1462940,1462942-1463061
Propchange: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Apr 23 19:12:27 2013
@@ -0,0 +1,7 @@
+/qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v0_8/handler:886720-886722,887145,892761,930288
+/qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v0_8/handler:795950-829653
+/qpid/branches/java-network-refactor/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v0_8/handler:805429-821809
+/qpid/branches/jmx_mc_gsoc09/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v0_8/handler:787599
+/qpid/branches/qpid-2935/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v0_8/handler:1061302-1072333
+/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler:1461895-1463061
+/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v0_8/handler:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561,748591,748641,748680,748686,749149,749282,749285,749315,749340,749572,753219-753220,753253,754934,754958,755256,757258,757270,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,1458037-1461856,1461895,1462162,1462470-1462472,1462550-1462551,1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageMetaData_1_0.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageMetaData_1_0.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SubjectCreator.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SubjectCreator.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SubjectCreator.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SubjectCreator.java Tue Apr 23 19:12:27 2013
@@ -21,17 +21,21 @@
package org.apache.qpid.server.security;
import java.security.Principal;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import javax.security.auth.Subject;
import javax.security.sasl.SaslException;
import javax.security.sasl.SaslServer;
+import org.apache.qpid.server.model.GroupProvider;
import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
import org.apache.qpid.server.security.auth.AuthenticationResult;
import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
import org.apache.qpid.server.security.auth.SubjectAuthenticationResult;
import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
-import org.apache.qpid.server.security.group.GroupPrincipalAccessor;
/**
* Creates a {@link Subject} formed by the {@link Principal}'s returned from:
@@ -48,12 +52,12 @@ import org.apache.qpid.server.security.g
public class SubjectCreator
{
private AuthenticationManager _authenticationManager;
- private GroupPrincipalAccessor _groupAccessor;
+ private Collection<GroupProvider> _groupProviders;
- public SubjectCreator(AuthenticationManager authenticationManager, GroupPrincipalAccessor groupAccessor)
+ public SubjectCreator(AuthenticationManager authenticationManager, Collection<GroupProvider> groupProviders)
{
_authenticationManager = authenticationManager;
- _groupAccessor = groupAccessor;
+ _groupProviders = groupProviders;
}
/**
@@ -112,7 +116,7 @@ public class SubjectCreator
final Subject authenticationSubject = new Subject();
authenticationSubject.getPrincipals().addAll(authenticationResult.getPrincipals());
- authenticationSubject.getPrincipals().addAll(_groupAccessor.getGroupPrincipals(username));
+ authenticationSubject.getPrincipals().addAll(getGroupPrincipals(username));
authenticationSubject.setReadOnly();
@@ -129,9 +133,24 @@ public class SubjectCreator
Subject authenticationSubject = new Subject();
authenticationSubject.getPrincipals().add(new AuthenticatedPrincipal(username));
- authenticationSubject.getPrincipals().addAll(_groupAccessor.getGroupPrincipals(username));
+ authenticationSubject.getPrincipals().addAll(getGroupPrincipals(username));
authenticationSubject.setReadOnly();
return authenticationSubject;
}
+
+ public Set<Principal> getGroupPrincipals(String username)
+ {
+ Set<Principal> principals = new HashSet<Principal>();
+ for (GroupProvider groupProvider : _groupProviders)
+ {
+ Set<Principal> groups = groupProvider.getGroupPrincipalsForUser(username);
+ if (groups != null)
+ {
+ principals.addAll(groups);
+ }
+ }
+
+ return Collections.unmodifiableSet(principals);
+ }
}
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManager.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManager.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManager.java Tue Apr 23 19:12:27 2013
@@ -31,8 +31,11 @@ public class ExternalAuthenticationManag
{
private static final String EXTERNAL = "EXTERNAL";
- ExternalAuthenticationManager()
+ private boolean _useFullDN = false;
+
+ ExternalAuthenticationManager(boolean useFullDN)
{
+ _useFullDN = useFullDN;
}
@Override
@@ -52,7 +55,7 @@ public class ExternalAuthenticationManag
{
if(EXTERNAL.equals(mechanism))
{
- return new ExternalSaslServer(externalPrincipal);
+ return new ExternalSaslServer(externalPrincipal, _useFullDN);
}
else
{
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java Tue Apr 23 19:12:27 2013
@@ -19,22 +19,32 @@
*/
package org.apache.qpid.server.security.auth.manager;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.util.ResourceBundleLoader;
public class ExternalAuthenticationManagerFactory implements AuthenticationManagerFactory
{
+ public static final String RESOURCE_BUNDLE = "org.apache.qpid.server.security.auth.manager.ExternalAuthenticationProviderAttributeDescriptions";
public static final String PROVIDER_TYPE = "External";
+ public static final String ATTRIBUTE_USE_FULL_DN = "useFullDN";
+
+ public static final Collection<String> ATTRIBUTES = Collections.<String> unmodifiableList(Arrays.asList(
+ ATTRIBUTE_TYPE,
+ ATTRIBUTE_USE_FULL_DN));
@Override
public AuthenticationManager createInstance(Map<String, Object> attributes)
{
if (attributes != null && PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE)))
{
- return new ExternalAuthenticationManager();
+ boolean useFullDN = Boolean.valueOf(String.valueOf(attributes.get(ATTRIBUTE_USE_FULL_DN)));
+
+ return new ExternalAuthenticationManager(useFullDN);
}
return null;
}
@@ -42,7 +52,7 @@ public class ExternalAuthenticationManag
@Override
public Collection<String> getAttributeNames()
{
- return Collections.<String>singletonList(ATTRIBUTE_TYPE);
+ return ATTRIBUTES;
}
@Override
@@ -54,7 +64,7 @@ public class ExternalAuthenticationManag
@Override
public Map<String, String> getAttributeDescriptions()
{
- return null;
+ return ResourceBundleLoader.getResources(RESOURCE_BUNDLE);
}
}
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java Tue Apr 23 19:12:27 2013
@@ -21,7 +21,6 @@ package org.apache.qpid.server.security.
import java.io.IOException;
import java.security.Principal;
-import java.util.HashMap;
import java.util.Hashtable;
import javax.naming.AuthenticationException;
@@ -37,7 +36,6 @@ import javax.security.auth.callback.Call
import javax.security.auth.callback.NameCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
import javax.security.sasl.AuthorizeCallback;
-import javax.security.sasl.Sasl;
import javax.security.sasl.SaslException;
import javax.security.sasl.SaslServer;
import org.apache.log4j.Logger;
@@ -45,6 +43,7 @@ import org.apache.qpid.server.security.a
import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
import org.apache.qpid.server.security.auth.UsernamePrincipal;
import org.apache.qpid.server.security.auth.sasl.plain.PlainPasswordCallback;
+import org.apache.qpid.server.security.auth.sasl.plain.PlainSaslServer;
public class SimpleLDAPAuthenticationManager implements AuthenticationManager
{
@@ -83,9 +82,7 @@ public class SimpleLDAPAuthenticationMan
{
if(PLAIN_MECHANISM.equals(mechanism))
{
- return Sasl.createSaslServer(PLAIN_MECHANISM, "AMQP", localFQDN,
- new HashMap<String, Object>(), new PlainCallbackHandler());
-
+ return new PlainSaslServer(new SimpleLDAPPlainCallbackHandler());
}
else
{
@@ -214,7 +211,7 @@ public class SimpleLDAPAuthenticationMan
}
}
- private class PlainCallbackHandler implements CallbackHandler
+ private class SimpleLDAPPlainCallbackHandler implements CallbackHandler
{
@Override
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/external/ExternalSaslServer.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/external/ExternalSaslServer.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/external/ExternalSaslServer.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/external/ExternalSaslServer.java Tue Apr 23 19:12:27 2013
@@ -19,19 +19,27 @@
package org.apache.qpid.server.security.auth.sasl.external;
import java.security.Principal;
+
+import javax.security.auth.x500.X500Principal;
import javax.security.sasl.SaslException;
import javax.security.sasl.SaslServer;
+import org.apache.log4j.Logger;
+import org.apache.qpid.server.security.auth.UsernamePrincipal;
public class ExternalSaslServer implements SaslServer
{
+ private static final Logger LOGGER = Logger.getLogger(ExternalSaslServer.class);
+
public static final String MECHANISM = "EXTERNAL";
private boolean _complete = false;
private final Principal _externalPrincipal;
+ private boolean _useFullDN = false;
- public ExternalSaslServer(Principal externalPrincipal)
+ public ExternalSaslServer(Principal externalPrincipal, boolean useFullDN)
{
+ _useFullDN = useFullDN;
_externalPrincipal = externalPrincipal;
}
@@ -77,6 +85,83 @@ public class ExternalSaslServer implemen
public Principal getAuthenticatedPrincipal()
{
- return _externalPrincipal;
+ if (_externalPrincipal instanceof X500Principal && !_useFullDN)
+ {
+ // Construct username as <CN>@<DC1>.<DC2>.<DC3>....<DCN>
+
+ String username;
+ String dn = ((X500Principal) _externalPrincipal).getName(X500Principal.RFC2253);
+
+ if(LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Parsing username from Principal DN: " + dn);
+ }
+
+ if (dn.contains("CN="))
+ {
+ username = dn.substring(dn.indexOf("CN=") + 3, (dn.indexOf(",", dn.indexOf("CN=")) != -1) ? dn.indexOf(",", dn.indexOf("CN=")) : dn.length());
+
+ if (username.isEmpty())
+ {
+ // CN is empty => Cannot construct username => Authentication failed => return null
+ if(LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("CN value was empty in Principal name, unable to construct username");
+ }
+ return null;
+ }
+ else
+ {
+ if (dn.contains("DC="))
+ {
+ int start = 0;
+ String dc = "";
+
+ while (dn.indexOf("DC=", start) != -1)
+ {
+ int dcStart = dn.indexOf("DC=", start) + 3;
+ int dcEnd = (dn.indexOf(",", dn.indexOf("DC=", start)) != -1) ? dn.indexOf(",", dn.indexOf("DC=", start)) : dn.length();
+
+ if (dc.isEmpty())
+ {
+ dc = dn.substring(dcStart, dcEnd);
+ }
+ else
+ {
+ dc = dc.concat(".").concat(dn.substring(dcStart, dcEnd));
+ }
+
+ start = dn.indexOf("DC=", start) + 1;
+ }
+
+ username = username.concat("@").concat(dc);
+ }
+ }
+
+ if(LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Constructing Principal with username: " + username);
+ }
+ return new UsernamePrincipal(username);
+ }
+ else
+ {
+ // No CN => Cannot construct username => Authentication failed => return null
+ if(LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("No CN= present in DN, unable to construct username");
+ }
+ return null;
+ }
+ }
+ else
+ {
+ if(LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Using external Principal: " + _externalPrincipal);
+ }
+
+ return _externalPrincipal;
+ }
}
}
\ No newline at end of file
Propchange: qpid/branches/QPID-4659/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java Tue Apr 23 19:12:27 2013
@@ -151,7 +151,7 @@ public class PortFactoryTest extends Qpi
}
}
- public void testCreateAmqpPortUsingSsslSucceedsWithKeyStore()
+ public void testCreateAmqpPortUsingSslSucceedsWithKeyStore()
{
when(_broker.getKeyStores()).thenReturn(Collections.singleton(_keyStore));
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/security/SubjectCreatorTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/security/SubjectCreatorTest.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/security/SubjectCreatorTest.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/security/SubjectCreatorTest.java Tue Apr 23 19:12:27 2013
@@ -23,19 +23,21 @@ import static org.mockito.Mockito.when;
import java.security.Principal;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashSet;
+import java.util.Set;
import javax.security.auth.Subject;
import javax.security.sasl.SaslServer;
import junit.framework.TestCase;
+import org.apache.qpid.server.model.GroupProvider;
import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
import org.apache.qpid.server.security.auth.AuthenticationResult;
import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
import org.apache.qpid.server.security.auth.SubjectAuthenticationResult;
import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
-import org.apache.qpid.server.security.group.GroupPrincipalAccessor;
public class SubjectCreatorTest extends TestCase
{
@@ -43,13 +45,15 @@ public class SubjectCreatorTest extends
private static final String PASSWORD = "password";
private AuthenticationManager _authenticationManager = mock(AuthenticationManager.class);
- private GroupPrincipalAccessor _groupPrincipalAccessor = mock(GroupPrincipalAccessor.class);
- private SubjectCreator _subjectCreator = new SubjectCreator(_authenticationManager, _groupPrincipalAccessor);
+
+ private GroupProvider _groupManager1 = mock(GroupProvider.class);
+ private GroupProvider _groupManager2 = mock(GroupProvider.class);
private Principal _userPrincipal = mock(Principal.class);
private Principal _group1 = mock(Principal.class);
private Principal _group2 = mock(Principal.class);
+ private SubjectCreator _subjectCreator;
private AuthenticationResult _authenticationResult;
private SaslServer _testSaslServer = mock(SaslServer.class);
private byte[] _saslResponseBytes = PASSWORD.getBytes();
@@ -57,11 +61,12 @@ public class SubjectCreatorTest extends
@Override
public void setUp()
{
+ when(_groupManager1.getGroupPrincipalsForUser(USERNAME)).thenReturn(Collections.singleton(_group1));
+ when(_groupManager2.getGroupPrincipalsForUser(USERNAME)).thenReturn(Collections.singleton(_group2));
+
+ _subjectCreator = new SubjectCreator(_authenticationManager, new HashSet<GroupProvider>(Arrays.asList(_groupManager1, _groupManager2)));
_authenticationResult = new AuthenticationResult(_userPrincipal);
when(_authenticationManager.authenticate(USERNAME, PASSWORD)).thenReturn(_authenticationResult);
-
- when(_groupPrincipalAccessor.getGroupPrincipals(USERNAME))
- .thenReturn(new HashSet<Principal>(Arrays.asList(_group1, _group2)));
}
public void testAuthenticateUsernameAndPasswordReturnsSubjectWithUserAndGroupPrincipals()
@@ -135,4 +140,30 @@ public class SubjectCreatorTest extends
assertSame(expectedStatus, subjectAuthenticationResult.getStatus());
assertNull(subjectAuthenticationResult.getSubject());
}
+
+ public void testGetGroupPrincipals()
+ {
+ getAndAssertGroupPrincipals(_group1, _group2);
+ }
+
+ public void testGetGroupPrincipalsWhenAGroupManagerReturnsNull()
+ {
+ when(_groupManager1.getGroupPrincipalsForUser(USERNAME)).thenReturn(null);
+
+ getAndAssertGroupPrincipals(_group2);
+ }
+
+ public void testGetGroupPrincipalsWhenAGroupManagerReturnsEmptySet()
+ {
+ when(_groupManager2.getGroupPrincipalsForUser(USERNAME)).thenReturn(new HashSet<Principal>());
+
+ getAndAssertGroupPrincipals(_group1);
+ }
+
+ private void getAndAssertGroupPrincipals(Principal... expectedGroups)
+ {
+ Set<Principal> actualGroupPrincipals = _subjectCreator.getGroupPrincipals(USERNAME);
+ Set<Principal> expectedGroupPrincipals = new HashSet<Principal>(Arrays.asList(expectedGroups));
+ assertEquals(expectedGroupPrincipals, actualGroupPrincipals);
+ }
}
Modified: qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java Tue Apr 23 19:12:27 2013
@@ -25,11 +25,13 @@ import javax.security.sasl.SaslException
import javax.security.sasl.SaslServer;
import org.apache.qpid.server.security.auth.AuthenticationResult;
+import org.apache.qpid.server.security.auth.UsernamePrincipal;
import org.apache.qpid.test.utils.QpidTestCase;
public class ExternalAuthenticationManagerTest extends QpidTestCase
{
- private AuthenticationManager _manager = new ExternalAuthenticationManager();
+ private AuthenticationManager _manager = new ExternalAuthenticationManager(false);
+ private AuthenticationManager _managerUsingFullDN = new ExternalAuthenticationManager(true);
public void testGetMechanisms() throws Exception
{
@@ -38,13 +40,23 @@ public class ExternalAuthenticationManag
public void testCreateSaslServer() throws Exception
{
- SaslServer server = _manager.createSaslServer("EXTERNAL", "example.example.com", null);
+ createSaslServerTestImpl(_manager);
+ }
+
+ public void testCreateSaslServerUsingFullDN() throws Exception
+ {
+ createSaslServerTestImpl(_managerUsingFullDN);
+ }
+
+ public void createSaslServerTestImpl(AuthenticationManager manager) throws Exception
+ {
+ SaslServer server = manager.createSaslServer("EXTERNAL", "example.example.com", null);
assertEquals("Sasl Server mechanism name is not as expected", "EXTERNAL", server.getMechanismName());
try
{
- server = _manager.createSaslServer("PLAIN", "example.example.com", null);
+ server = manager.createSaslServer("PLAIN", "example.example.com", null);
fail("Expected creating SaslServer with incorrect mechanism to throw an exception");
}
catch (SaslException e)
@@ -53,12 +65,16 @@ public class ExternalAuthenticationManag
}
}
- public void testAuthenticate() throws Exception
+ /**
+ * Test behaviour of the authentication when the useFullDN attribute is set true
+ * and the username is taken directly as the externally supplied Principal
+ */
+ public void testAuthenticateWithFullDN() throws Exception
{
X500Principal principal = new X500Principal("CN=person, DC=example, DC=com");
- SaslServer saslServer = _manager.createSaslServer("EXTERNAL", "example.example.com", principal);
+ SaslServer saslServer = _managerUsingFullDN.createSaslServer("EXTERNAL", "example.example.com", principal);
- AuthenticationResult result = _manager.authenticate(saslServer, new byte[0]);
+ AuthenticationResult result = _managerUsingFullDN.authenticate(saslServer, new byte[0]);
assertNotNull(result);
assertEquals("Expected authentication to be successful",
AuthenticationResult.AuthenticationStatus.SUCCESS,
@@ -66,15 +82,102 @@ public class ExternalAuthenticationManag
assertOnlyContainsWrapped(principal, result.getPrincipals());
+ saslServer = _managerUsingFullDN.createSaslServer("EXTERNAL", "example.example.com", null);
+ result = _managerUsingFullDN.authenticate(saslServer, new byte[0]);
+
+ assertNotNull(result);
+ assertEquals("Expected authentication to be unsuccessful",
+ AuthenticationResult.AuthenticationStatus.ERROR,
+ result.getStatus());
+ }
+
+ /**
+ * Test behaviour of the authentication when parsing the username from
+ * the Principals DN as <CN>@<DC1>.<DC2>.<DC3>....<DCN>
+ */
+ public void testAuthenticateWithUsernameBasedOnCNAndDC() throws Exception
+ {
+ X500Principal principal;
+ SaslServer saslServer;
+ AuthenticationResult result;
+ UsernamePrincipal expectedPrincipal;
+
+ // DN contains only CN
+ principal = new X500Principal("CN=person");
+ expectedPrincipal = new UsernamePrincipal("person");
+ saslServer = _manager.createSaslServer("EXTERNAL", "example.example.com", principal);
+
+ result = _manager.authenticate(saslServer, new byte[0]);
+ assertNotNull(result);
+ assertEquals("Expected authentication to be successful",
+ AuthenticationResult.AuthenticationStatus.SUCCESS,
+ result.getStatus());
+ assertOnlyContainsWrapped(expectedPrincipal, result.getPrincipals());
+
+ // Null princial
saslServer = _manager.createSaslServer("EXTERNAL", "example.example.com", null);
result = _manager.authenticate(saslServer, new byte[0]);
assertNotNull(result);
- assertEquals("Expected authentication to be unsuccessful",
- AuthenticationResult.AuthenticationStatus.ERROR,
- result.getStatus());
+ assertEquals("Expected authentication to be unsuccessful",
+ AuthenticationResult.AuthenticationStatus.ERROR,
+ result.getStatus());
+
+ // DN doesn't contain CN
+ principal = new X500Principal("DC=example, DC=com, O=My Company Ltd, L=Newbury, ST=Berkshire, C=GB");
+ saslServer = _manager.createSaslServer("EXTERNAL", "example.example.com", principal);
+ result = _manager.authenticate(saslServer, new byte[0]);
- }
+ assertNotNull(result);
+ assertEquals("Expected authentication to be unsuccessful",
+ AuthenticationResult.AuthenticationStatus.ERROR,
+ result.getStatus());
+
+ // DN contains empty CN
+ principal = new X500Principal("CN=, DC=example, DC=com, O=My Company Ltd, L=Newbury, ST=Berkshire, C=GB");
+ saslServer = _manager.createSaslServer("EXTERNAL", "example.example.com", principal);
+ result = _manager.authenticate(saslServer, new byte[0]);
+
+ assertNotNull(result);
+ assertEquals("Expected authentication to be unsuccessful",
+ AuthenticationResult.AuthenticationStatus.ERROR,
+ result.getStatus());
+
+ // DN contains CN and DC
+ principal = new X500Principal("CN=person, DC=example, DC=com");
+ expectedPrincipal = new UsernamePrincipal("person@example.com");
+ saslServer = _manager.createSaslServer("EXTERNAL", "example.example.com", principal);
+
+ result = _manager.authenticate(saslServer, new byte[0]);
+ assertNotNull(result);
+ assertEquals("Expected authentication to be successful",
+ AuthenticationResult.AuthenticationStatus.SUCCESS,
+ result.getStatus());
+ assertOnlyContainsWrapped(expectedPrincipal, result.getPrincipals());
+
+ // DN contains CN and DC and other components
+ principal = new X500Principal("CN=person, DC=example, DC=com, O=My Company Ltd, L=Newbury, ST=Berkshire, C=GB");
+ expectedPrincipal = new UsernamePrincipal("person@example.com");
+ saslServer = _manager.createSaslServer("EXTERNAL", "example.example.com", principal);
+
+ result = _manager.authenticate(saslServer, new byte[0]);
+ assertNotNull(result);
+ assertEquals("Expected authentication to be successful",
+ AuthenticationResult.AuthenticationStatus.SUCCESS,
+ result.getStatus());
+ assertOnlyContainsWrapped(expectedPrincipal, result.getPrincipals());
+
+ // DN contains CN and DC and other components
+ principal = new X500Principal("CN=person, O=My Company Ltd, L=Newbury, ST=Berkshire, C=GB");
+ expectedPrincipal = new UsernamePrincipal("person");
+ saslServer = _manager.createSaslServer("EXTERNAL", "example.example.com", principal);
+ result = _manager.authenticate(saslServer, new byte[0]);
+ assertNotNull(result);
+ assertEquals("Expected authentication to be successful",
+ AuthenticationResult.AuthenticationStatus.SUCCESS,
+ result.getStatus());
+ assertOnlyContainsWrapped(expectedPrincipal, result.getPrincipals());
+ }
}
Modified: qpid/branches/QPID-4659/qpid/java/build.deps
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/build.deps?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/build.deps (original)
+++ qpid/branches/QPID-4659/qpid/java/build.deps Tue Apr 23 19:12:27 2013
@@ -104,7 +104,7 @@ jca.libs=${geronimo-j2ee} ${geronimo-jta
jca.test.libs=${test.libs}
# optional bdbstore module deps
-bdb-je=lib/bdbstore/je-5.0.58.jar
+bdb-je=lib/bdbstore/je-5.0.73.jar
bdbstore.libs=${bdb-je}
bdbstore.test.libs=${test.libs}
Modified: qpid/branches/QPID-4659/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java (original)
+++ qpid/branches/QPID-4659/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java Tue Apr 23 19:12:27 2013
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.client;
+import org.apache.qpid.client.AMQDestination.DestSyntax;
import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.messaging.Address;
@@ -216,13 +217,27 @@ public class AMQTopic extends AMQDestina
public boolean equals(Object o)
{
- return (o instanceof AMQTopic)
+ if (getDestSyntax() == DestSyntax.ADDR)
+ {
+ return super.equals(o);
+ }
+ else
+ {
+ return (o instanceof AMQTopic)
&& ((AMQTopic)o).getExchangeName().equals(getExchangeName())
&& ((AMQTopic)o).getRoutingKey().equals(getRoutingKey());
+ }
}
public int hashCode()
{
- return getExchangeName().hashCode() + getRoutingKey().hashCode();
+ if (getDestSyntax() == DestSyntax.ADDR)
+ {
+ return super.hashCode();
+ }
+ else
+ {
+ return getExchangeName().hashCode() + getRoutingKey().hashCode();
+ }
}
}
Modified: qpid/branches/QPID-4659/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java (original)
+++ qpid/branches/QPID-4659/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java Tue Apr 23 19:12:27 2013
@@ -24,12 +24,12 @@ import junit.framework.TestCase;
public class AMQDestinationTest extends TestCase
{
- public void testEqaulsAndHashCodeForAddressBasedDestinations() throws Exception
+ public void testEqualsAndHashCodeForAddressBasedDestinations() throws Exception
{
AMQDestination dest = new AMQQueue("ADDR:Foo; {node :{type:queue}}");
AMQDestination dest1 = new AMQTopic("ADDR:Foo; {node :{type:topic}}");
- AMQDestination dest2 = new AMQQueue(
- "ADDR:Foo; {create:always,node :{type:queue}}");
+ AMQDestination dest10 = new AMQTopic("ADDR:Foo; {node :{type:topic}, link:{name:my-topic}}");
+ AMQDestination dest2 = new AMQQueue("ADDR:Foo; {create:always,node :{type:queue}}");
String bUrl = "BURL:direct://amq.direct/test-route/Foo?routingkey='Foo'";
AMQDestination dest3 = new AMQQueue(bUrl);
@@ -37,14 +37,30 @@ public class AMQDestinationTest extends
assertFalse(dest.equals(dest1));
assertTrue(dest.equals(dest2));
assertFalse(dest.equals(dest3));
+ assertTrue(dest1.equals(dest10));
assertTrue(dest.hashCode() == dest.hashCode());
assertTrue(dest.hashCode() != dest1.hashCode());
assertTrue(dest.hashCode() == dest2.hashCode());
assertTrue(dest.hashCode() != dest3.hashCode());
+ assertTrue(dest1.hashCode() == dest10.hashCode());
AMQDestination dest4 = new AMQQueue("ADDR:Foo/Bar; {node :{type:queue}}");
AMQDestination dest5 = new AMQQueue("ADDR:Foo/Bar2; {node :{type:queue}}");
+ assertFalse(dest4.equals(dest5));
assertTrue(dest4.hashCode() != dest5.hashCode());
+
+ AMQDestination dest6 = new AMQAnyDestination("ADDR:Foo; {node :{type:queue}}");
+ AMQDestination dest7 = new AMQAnyDestination("ADDR:Foo; {create: always, node :{type:queue}, link:{capacity: 10}}");
+ AMQDestination dest8 = new AMQAnyDestination("ADDR:Foo; {create: always, link:{capacity: 10}}");
+ AMQDestination dest9 = new AMQAnyDestination("ADDR:Foo/bar");
+ assertTrue(dest6.equals(dest7));
+ assertFalse(dest6.equals(dest8)); //dest8 type unknown, could be a topic
+ assertFalse(dest7.equals(dest8)); //dest8 type unknown, could be a topic
+ assertFalse(dest6.equals(dest9));
+ assertTrue(dest6.hashCode() == dest7.hashCode());
+ assertTrue(dest6.hashCode() != dest8.hashCode());
+ assertTrue(dest7.hashCode() != dest8.hashCode());
+ assertTrue(dest6.hashCode() != dest9.hashCode());
}
}
Modified: qpid/branches/QPID-4659/qpid/java/ivy.retrieve.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/ivy.retrieve.xml?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/ivy.retrieve.xml (original)
+++ qpid/branches/QPID-4659/qpid/java/ivy.retrieve.xml Tue Apr 23 19:12:27 2013
@@ -75,7 +75,7 @@
<!-- The following are optional dependencies, for modules providing optional functionlity or
for use in optional build/test steps. Their optional status is usually indicative of licences
which are not compatible with the Apache Licence -->
- <dependency org="com.sleepycat" name="je" rev="5.0.58" transitive="false" conf="bdbje"/>
+ <dependency org="com.sleepycat" name="je" rev="5.0.73" transitive="false" conf="bdbje"/>
<dependency org="jfree" name="jfreechart" rev="1.0.13" transitive="false" conf="jfree"/>
<dependency org="jfree" name="jcommon" rev="1.0.16" transitive="false" conf="jfree"/>
<dependency org="net.sourceforge.csvjdbc" name="csvjdbc" rev="1.0.8" transitive="false" conf="csvjdbc"/>
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/LoggingManagement.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/LoggingManagement.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedConnection.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedConnection.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanAttribute.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanAttribute.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanConstructor.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanConstructor.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanDescription.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanDescription.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperation.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperation.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperationParameter.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperationParameter.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Modified: qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationTest.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationTest.java (original)
+++ qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationTest.java Tue Apr 23 19:12:27 2013
@@ -21,13 +21,14 @@
package org.apache.qpid.server.security.auth.manager;
import static org.apache.qpid.test.utils.TestSSLConstants.KEYSTORE;
-import static org.apache.qpid.test.utils.TestSSLConstants.UNTRUSTED_KEYSTORE;
import static org.apache.qpid.test.utils.TestSSLConstants.KEYSTORE_PASSWORD;
import static org.apache.qpid.test.utils.TestSSLConstants.TRUSTSTORE;
import static org.apache.qpid.test.utils.TestSSLConstants.TRUSTSTORE_PASSWORD;
+import static org.apache.qpid.test.utils.TestSSLConstants.UNTRUSTED_KEYSTORE;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.jms.Connection;
@@ -35,11 +36,13 @@ import javax.jms.JMSException;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.qpid.client.AMQConnectionURL;
+import org.apache.qpid.management.common.mbeans.ManagedConnection;
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.test.utils.JMXTestUtils;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
@@ -193,9 +196,78 @@ public class ExternalAuthenticationTest
}
}
+ /**
+ * Tests the creation of usernames when EXTERNAL authentication is used.
+ * The username should be created as CN@DC1.DC2...DCn by default.
+ */
+ public void testExternalAuthenticationManagerUsernameAsCN() throws Exception
+ {
+ JMXTestUtils jmxUtils = new JMXTestUtils(this);
+ jmxUtils.setUp();
+
+ setCommonBrokerSSLProperties(true);
+ getBrokerConfiguration().setObjectAttribute(TestBrokerConfiguration.ENTRY_NAME_SSL_PORT, Port.AUTHENTICATION_PROVIDER, TestBrokerConfiguration.ENTRY_NAME_EXTERNAL_PROVIDER);
+
+ super.setUp();
+
+ setClientKeystoreProperties();
+ setClientTrustoreProperties();
+
+ try
+ {
+ getExternalSSLConnection(false);
+ }
+ catch (JMSException e)
+ {
+ fail("Should be able to create a connection to the SSL port: " + e.getMessage());
+ }
+
+ // Getting the used username using JMX
+ jmxUtils.open();
+ List<ManagedConnection> connections = jmxUtils.getManagedConnections("test");
+ assertNotNull("Connections are null", connections);
+ assertEquals("Unexpected number of connections", 1, connections.size());
+ assertEquals("Wrong authorized ID", "app2@acme.org", connections.get(0).getAuthorizedId());
+ }
+
+ /**
+ * Tests the creation of usernames when EXTERNAL authentication is used.
+ * The username should be created as full DN when the useFullDN option is used.
+ */
+ public void testExternalAuthenticationManagerUsernameAsDN() throws Exception
+ {
+ JMXTestUtils jmxUtils = new JMXTestUtils(this);
+ jmxUtils.setUp();
+
+ setCommonBrokerSSLProperties(true);
+ getBrokerConfiguration().setObjectAttribute(TestBrokerConfiguration.ENTRY_NAME_SSL_PORT, Port.AUTHENTICATION_PROVIDER, TestBrokerConfiguration.ENTRY_NAME_EXTERNAL_PROVIDER);
+ getBrokerConfiguration().setObjectAttribute(TestBrokerConfiguration.ENTRY_NAME_EXTERNAL_PROVIDER, ExternalAuthenticationManagerFactory.ATTRIBUTE_USE_FULL_DN, "true");
+
+ super.setUp();
+
+ setClientKeystoreProperties();
+ setClientTrustoreProperties();
+
+ try
+ {
+ getExternalSSLConnection(false);
+ }
+ catch (JMSException e)
+ {
+ fail("Should be able to create a connection to the SSL port: " + e.getMessage());
+ }
+
+ // Getting the used username using JMX
+ jmxUtils.open();
+ List<ManagedConnection> connections = jmxUtils.getManagedConnections("test");
+ assertNotNull("Connections are null", connections);
+ assertEquals("Unexpected number of connections", 1, connections.size());
+ assertEquals("Wrong authorized ID", "CN=app2@acme.org,OU=art,O=acme,L=Toronto,ST=ON,C=CA", connections.get(0).getAuthorizedId());
+ }
+
private Connection getExternalSSLConnection(boolean includeUserNameAndPassword) throws Exception
{
- String url = "amqp://%s@test/?brokerlist='tcp://localhost:%s?ssl='true'&sasl_mechs='EXTERNAL''";
+ String url = "amqp://%s@test/?brokerlist='tcp://localhost:%s?ssl='true'&sasl_mechs='EXTERNAL'&ssl_cert_alias='app2''";
if (includeUserNameAndPassword)
{
url = String.format(url, "guest:guest", String.valueOf(QpidBrokerTestCase.DEFAULT_SSL_PORT));
Modified: qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java (original)
+++ qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java Tue Apr 23 19:12:27 2013
@@ -24,6 +24,7 @@ import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.LifetimePolicy;
@@ -90,6 +91,22 @@ public class AuthenticationProviderRestT
assertProvider(false, AnonymousAuthenticationManagerFactory.PROVIDER_TYPE, provider);
}
+ public void testUpdateAuthenticationProviderIdFails() throws Exception
+ {
+ String providerName = "test-provider";
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(AuthenticationProvider.NAME, providerName);
+ attributes.put(AuthenticationProvider.TYPE, AnonymousAuthenticationManagerFactory.PROVIDER_TYPE);
+
+ int responseCode = getRestTestHelper().submitRequest("/rest/authenticationprovider/" + providerName, "PUT", attributes);
+ assertEquals("Unexpected response code", 201, responseCode);
+
+ attributes.put(AuthenticationProvider.ID, UUID.randomUUID());
+
+ responseCode = getRestTestHelper().submitRequest("/rest/authenticationprovider/" + providerName, "PUT", attributes);
+ assertEquals("Update with new ID should fail", 409, responseCode);
+ }
+
public void testDeleteOfDefaultAuthenticationProviderFails() throws Exception
{
String providerName = TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER;
Modified: qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java?rev=1471100&r1=1471099&r2=1471100&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java (original)
+++ qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java Tue Apr 23 19:12:27 2013
@@ -21,16 +21,20 @@
package org.apache.qpid.systest.rest;
import java.net.URLDecoder;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Protocol;
import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
@@ -159,8 +163,7 @@ public class PortRestTest extends QpidRe
responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
assertEquals("Port cannot be updated in non management mode", 409, responseCode);
- stopBroker();
- startBroker(DEFAULT_PORT, true);
+ restartBrokerInManagementMode();
responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
assertEquals("Port should be allwed to update in a management mode", 200, responseCode);
@@ -193,4 +196,133 @@ public class PortRestTest extends QpidRe
port = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT);
assertEquals("Port has been changed", portValue, port.get(Port.PORT));
}
+
+ public void testUpdatePortTransportFromTCPToSSLWhenKeystoreIsConfigured() throws Exception
+ {
+ restartBrokerInManagementMode();
+
+ String portName = TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT;
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portName);
+ attributes.put(Port.TRANSPORTS, Collections.singleton(Transport.SSL));
+
+ int responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("Transport has not been changed to SSL " , 200, responseCode);
+
+ restartBroker();
+
+ Map<String, Object> port = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + portName);
+
+ @SuppressWarnings("unchecked")
+ Collection<String> transports = (Collection<String>) port.get(Port.TRANSPORTS);
+ assertEquals("Unexpected auth provider", new HashSet<String>(Arrays.asList(Transport.SSL.name())),
+ new HashSet<String>(transports));
+ }
+
+ public void testUpdateTransportFromTCPToSSLWithoutKeystoreConfiguredFails() throws Exception
+ {
+ getBrokerConfiguration().setBrokerAttribute(Broker.KEY_STORE_PATH, null);
+ getBrokerConfiguration().setSaved(false);
+ restartBrokerInManagementMode();
+
+ String portName = TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT;
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portName);
+ attributes.put(Port.TRANSPORTS, Collections.singleton(Transport.SSL));
+
+ int responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("Creation of SSL port without keystore should fail", 409, responseCode);
+ }
+
+ public void testUpdateWantNeedClientAuth() throws Exception
+ {
+ String portName = TestBrokerConfiguration.ENTRY_NAME_SSL_PORT;
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portName);
+ attributes.put(Port.PORT, DEFAULT_SSL_PORT);
+ attributes.put(Port.TRANSPORTS, Collections.singleton(Transport.SSL));
+
+ int responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("SSL port was not added", 201, responseCode);
+
+ restartBrokerInManagementMode();
+
+ attributes.put(Port.NEED_CLIENT_AUTH, true);
+ attributes.put(Port.WANT_CLIENT_AUTH, true);
+
+ responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("Attributes for need/want client auth are not set", 200, responseCode);
+
+ restartBroker();
+ Map<String, Object> port = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + portName);
+ assertEquals("Unexpected " + Port.NEED_CLIENT_AUTH, true, port.get(Port.NEED_CLIENT_AUTH));
+ assertEquals("Unexpected " + Port.WANT_CLIENT_AUTH, true, port.get(Port.WANT_CLIENT_AUTH));
+
+ restartBrokerInManagementMode();
+
+ attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portName);
+ attributes.put(Port.TRANSPORTS, Collections.singleton(Transport.TCP));
+
+ responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("Should not be able to change transport to SSL without reseting of attributes for need/want client auth", 409, responseCode);
+
+ attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portName);
+ attributes.put(Port.TRANSPORTS, Collections.singleton(Transport.TCP));
+ attributes.put(Port.NEED_CLIENT_AUTH, false);
+ attributes.put(Port.WANT_CLIENT_AUTH, false);
+
+ responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("Should be able to change transport to TCP ", 200, responseCode);
+
+ restartBroker();
+ port = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + portName);
+ assertEquals("Unexpected " + Port.NEED_CLIENT_AUTH, false, port.get(Port.NEED_CLIENT_AUTH));
+ assertEquals("Unexpected " + Port.WANT_CLIENT_AUTH, false, port.get(Port.WANT_CLIENT_AUTH));
+
+ @SuppressWarnings("unchecked")
+ Collection<String> transports = (Collection<String>) port.get(Port.TRANSPORTS);
+ assertEquals("Unexpected auth provider", new HashSet<String>(Arrays.asList(Transport.TCP.name())),
+ new HashSet<String>(transports));
+ }
+
+ public void testUpdateSettingWantNeedCertificateFailsForNonSSLPort() throws Exception
+ {
+ restartBrokerInManagementMode();
+
+ String portName = TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT;
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portName);
+ attributes.put(Port.NEED_CLIENT_AUTH, true);
+ int responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("Unexpected response when trying to set 'needClientAuth' on non-SSL port", 409, responseCode);
+
+ attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portName);
+ attributes.put(Port.WANT_CLIENT_AUTH, true);
+ responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("Unexpected response when trying to set 'wantClientAuth' on non-SSL port", 409, responseCode);
+ }
+
+ public void testUpdatePortAuthenticationProvider() throws Exception
+ {
+ restartBrokerInManagementMode();
+
+ String portName = TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT;
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portName);
+ attributes.put(Port.AUTHENTICATION_PROVIDER, "non-existing");
+ int responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("Unexpected response when trying to change auth provider to non-existing one", 409, responseCode);
+
+ attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portName);
+ attributes.put(Port.AUTHENTICATION_PROVIDER, ANONYMOUS_AUTHENTICATION_PROVIDER);
+ responseCode = getRestTestHelper().submitRequest("/rest/port/" + portName, "PUT", attributes);
+ assertEquals("Unexpected response when trying to change auth provider to existing one", 200, responseCode);
+
+ Map<String, Object> port = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + portName);
+ assertEquals("Unexpected auth provider", ANONYMOUS_AUTHENTICATION_PROVIDER, port.get(Port.AUTHENTICATION_PROVIDER));
+ }
}
Propchange: qpid/branches/QPID-4659/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/CPPExcludes
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/CPPExcludes:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/Excludes
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/Excludes:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/JavaBDBExcludes
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/JavaBDBExcludes:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/JavaExcludes
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/JavaExcludes:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/JavaPre010Excludes
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/JavaPre010Excludes:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/JavaTransientExcludes
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/XAExcludes
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/XAExcludes:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/cpp.async.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/cpp.async.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/cpp.cluster.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/cpp.cluster.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/cpp.noprefetch.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/cpp.noprefetch.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/cpp.ssl.excludes
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/cpp.ssl.excludes:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/cpp.ssl.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/cpp.ssl.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/cpp.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/cpp.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/java-bdb.0-9-1.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/java-bdb.0-9-1.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/java-dby.0-9-1.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/java-dby.0-9-1.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/java-mms.0-9-1.testprofile
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/java-mms.0-9-1.testprofile:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/log4j-test.xml
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/log4j-test.xml:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/test-provider.properties
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/test-provider.properties:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/test_resources/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/test_resources:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
Propchange: qpid/branches/QPID-4659/qpid/java/test-profiles/testprofile.defaults
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/java/test-profiles/testprofile.defaults:r1463062-1463064,1463073-1463074,1463142-1463143,1463148,1463158,1463223,1463353,1463626,1463917,1463933-1463934,1464115,1464362,1464938,1465457
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org