Author: rgodfrey
Date: Thu Jun 11 21:11:33 2015
New Revision: 1684975
URL: http://svn.apache.org/r1684975
Log:
QPID-6585 : Allow omission of the AMQP 1.0 SASL layer for ports where External
or Anonymous auth is allowed
Added:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0.java
- copied, changed from r1684834,
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0.java
- copied, changed from r1684851,
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0Test.java
(with props)
Removed:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/codec/Encoder.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/ProtocolEngineCreator.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerImpl.java
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_8.java
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9.java
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9_1.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/pom.xml
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/ProtocolEngineCreator.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/ProtocolEngineCreator.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/ProtocolEngineCreator.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/ProtocolEngineCreator.java
Thu Jun 11 21:11:33 2015
@@ -36,5 +36,7 @@ public interface ProtocolEngineCreator e
AmqpPort<?> port,
Transport transport,
long id, final AggregateTicker
aggregateTicker);
+
+ byte[] getSuggestedAlternativeHeader();
}
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java
Thu Jun 11 21:11:33 2015
@@ -520,12 +520,16 @@ public class MultiVersionProtocolEngine
newDelegate =
_creators[i].newProtocolEngine(_broker,
_network, _port, _transport, _id,
_aggregateTicker);
+ if(newDelegate == null &&
_creators[i].getSuggestedAlternativeHeader() != null)
+ {
+ defaultSupportedReplyBytes =
_creators[i].getSuggestedAlternativeHeader();
+ }
}
}
//If there is a configured default reply to an unsupported
version initiation,
//then save the associated reply header bytes when we
encounter them
- if(_defaultSupportedReply != null &&
_creators[i].getVersion() == _defaultSupportedReply)
+ if(defaultSupportedReplyBytes == null &&
_defaultSupportedReply != null && _creators[i].getVersion() ==
_defaultSupportedReply)
{
defaultSupportedReplyBytes =
_creators[i].getHeaderIdentifier();
}
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java
Thu Jun 11 21:11:33 2015
@@ -40,7 +40,7 @@ import org.apache.qpid.server.security.a
public class AnonymousAuthenticationManager extends
AbstractAuthenticationManager<AnonymousAuthenticationManager>
{
public static final String PROVIDER_TYPE = "Anonymous";
- private static final String ANONYMOUS = "ANONYMOUS";
+ public static final String MECHANISM_NAME = "ANONYMOUS";
public static final String ANONYMOUS_USERNAME = "ANONYMOUS";
@@ -63,13 +63,13 @@ public class AnonymousAuthenticationMana
@Override
public List<String> getMechanisms()
{
- return Collections.singletonList(ANONYMOUS);
+ return Collections.singletonList(MECHANISM_NAME);
}
@Override
public SaslServer createSaslServer(String mechanism, String localFQDN,
Principal externalPrincipal) throws SaslException
{
- if(ANONYMOUS.equals(mechanism))
+ if(MECHANISM_NAME.equals(mechanism))
{
return new AnonymousSaslServer();
}
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerImpl.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerImpl.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerImpl.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerImpl.java
Thu Jun 11 21:11:33 2015
@@ -28,9 +28,7 @@ import javax.security.sasl.SaslServer;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ManagedAttributeField;
-import org.apache.qpid.server.model.ManagedObject;
import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import
org.apache.qpid.server.model.PreferencesSupportingAuthenticationProvider;
import org.apache.qpid.server.security.auth.AuthenticationResult;
import org.apache.qpid.server.security.auth.UsernamePrincipal;
import org.apache.qpid.server.security.auth.sasl.external.ExternalSaslServer;
@@ -38,7 +36,7 @@ import org.apache.qpid.server.security.a
public class ExternalAuthenticationManagerImpl extends
AbstractAuthenticationManager<ExternalAuthenticationManagerImpl>
implements
ExternalAuthenticationManager<ExternalAuthenticationManagerImpl>
{
- private static final String EXTERNAL = "EXTERNAL";
+ public static final String MECHANISM_NAME = "EXTERNAL";
@ManagedAttributeField
private boolean _useFullDN;
@@ -58,13 +56,13 @@ public class ExternalAuthenticationManag
@Override
public List<String> getMechanisms()
{
- return Collections.singletonList(EXTERNAL);
+ return Collections.singletonList(MECHANISM_NAME);
}
@Override
public SaslServer createSaslServer(String mechanism, String localFQDN,
Principal externalPrincipal) throws SaslException
{
- if(EXTERNAL.equals(mechanism))
+ if(MECHANISM_NAME.equals(mechanism))
{
return new ExternalSaslServer(externalPrincipal, _useFullDN);
}
Modified:
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java
Thu Jun 11 21:11:33 2015
@@ -93,6 +93,11 @@ public class ProtocolEngineCreator_0_10
return protocolEngine;
}
+ @Override
+ public byte[] getSuggestedAlternativeHeader()
+ {
+ return null;
+ }
private static ProtocolEngineCreator INSTANCE = new
ProtocolEngineCreator_0_10();
Modified:
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_8.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_8.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_8.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_8.java
Thu Jun 11 21:11:33 2015
@@ -68,6 +68,12 @@ public class ProtocolEngineCreator_0_8 i
return new AMQProtocolEngine(broker, network, id, port, transport,
aggregateTicker);
}
+ @Override
+ public byte[] getSuggestedAlternativeHeader()
+ {
+ return null;
+ }
+
private static ProtocolEngineCreator INSTANCE = new
ProtocolEngineCreator_0_8();
public static ProtocolEngineCreator getInstance()
Modified:
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9.java
Thu Jun 11 21:11:33 2015
@@ -68,6 +68,12 @@ public class ProtocolEngineCreator_0_9 i
return new AMQProtocolEngine(broker, network, id, port, transport,
aggregateTicker);
}
+ @Override
+ public byte[] getSuggestedAlternativeHeader()
+ {
+ return null;
+ }
+
private static ProtocolEngineCreator INSTANCE = new
ProtocolEngineCreator_0_9();
public static ProtocolEngineCreator getInstance()
Modified:
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9_1.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9_1.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9_1.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9_1.java
Thu Jun 11 21:11:33 2015
@@ -69,6 +69,11 @@ public class ProtocolEngineCreator_0_9_1
return new AMQProtocolEngine(broker, network, id, port, transport,
aggregateTicker);
}
+ @Override
+ public byte[] getSuggestedAlternativeHeader()
+ {
+ return null;
+ }
private static ProtocolEngineCreator INSTANCE = new
ProtocolEngineCreator_0_9_1();
Modified: qpid/java/trunk/broker-plugins/amqp-1-0-protocol/pom.xml
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/pom.xml?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-1-0-protocol/pom.xml (original)
+++ qpid/java/trunk/broker-plugins/amqp-1-0-protocol/pom.xml Thu Jun 11
21:11:33 2015
@@ -50,6 +50,21 @@
<version>${logback-version}</version>
</dependency>
+ <!-- test dependencies -->
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-test-utils</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-broker-core</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
Modified:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
Thu Jun 11 21:11:33 2015
@@ -68,7 +68,7 @@ public class Connection_1_0 implements C
private final AmqpPort<?> _port;
private final Broker<?> _broker;
private final SubjectCreator _subjectCreator;
- private final ProtocolEngine_1_0_0_SASL _protocolEngine;
+ private final ProtocolEngine_1_0_0 _protocolEngine;
private VirtualHostImpl _vhost;
private final Transport _transport;
private final ConnectionEndpoint _conn;
@@ -118,7 +118,7 @@ public class Connection_1_0 implements C
AmqpPort<?> port,
Transport transport,
final SubjectCreator subjectCreator,
- final ProtocolEngine_1_0_0_SASL protocolEngine)
+ final ProtocolEngine_1_0_0 protocolEngine)
{
_protocolEngine = protocolEngine;
_broker = broker;
@@ -154,13 +154,34 @@ public class Connection_1_0 implements C
}
else
{
- _vhost.getConnectionRegistry().registerConnection(this);
- Subject authSubject =
_subjectCreator.createSubjectWithGroups(_conn.getUser());
- _subject.getPrincipals().addAll(authSubject.getPrincipals());
-
_subject.getPublicCredentials().addAll(authSubject.getPublicCredentials());
-
_subject.getPrivateCredentials().addAll(authSubject.getPrivateCredentials());
+ final Principal user = _conn.getUser();
+ if(user != null)
+ {
+ setUserPrincipal(user);
+ }
+
if(AuthenticatedPrincipal.getOptionalAuthenticatedPrincipalFromSubject(_subject)
== null)
+ {
+ final Error err = new Error();
+ err.setCondition(AmqpError.NOT_ALLOWED);
+ err.setDescription("Connection has not been authenticated");
+ _conn.close(err);
+ _closedOnOpen = true;
+ }
+ else
+ {
+ _vhost.getConnectionRegistry().registerConnection(this);
+ }
}
}
+
+ void setUserPrincipal(final Principal user)
+ {
+ Subject authSubject = _subjectCreator.createSubjectWithGroups(user);
+ _subject.getPrincipals().addAll(authSubject.getPrincipals());
+
_subject.getPublicCredentials().addAll(authSubject.getPublicCredentials());
+
_subject.getPrivateCredentials().addAll(authSubject.getPrivateCredentials());
+ }
+
public void remoteSessionCreation(SessionEndpoint endpoint)
{
if(!_closedOnOpen)
Copied:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0.java
(from r1684834,
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java)
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0.java?p2=qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0.java&p1=qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java&r1=1684834&r2=1684975&rev=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0.java
Thu Jun 11 21:11:33 2015
@@ -20,31 +20,42 @@
*/
package org.apache.qpid.server.protocol.v1_0;
-import org.apache.qpid.server.protocol.ServerProtocolEngine;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.Protocol;
import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.model.port.AmqpPort;
import org.apache.qpid.server.plugin.PluggableService;
import org.apache.qpid.server.plugin.ProtocolEngineCreator;
+import org.apache.qpid.server.protocol.ServerProtocolEngine;
+import
org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
+import
org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManagerImpl;
import org.apache.qpid.transport.network.AggregateTicker;
import org.apache.qpid.transport.network.NetworkConnection;
@PluggableService
-public class ProtocolEngineCreator_1_0_0_SASL implements ProtocolEngineCreator
+public class ProtocolEngineCreator_1_0_0 implements ProtocolEngineCreator
{
- private static final byte[] AMQP_SASL_1_0_0_HEADER =
+ private static final Logger LOGGER =
LoggerFactory.getLogger(ProtocolEngineCreator_1_0_0.class);
+
+ private static final byte[] AMQP_1_0_0_HEADER =
new byte[] { (byte) 'A',
(byte) 'M',
(byte) 'Q',
(byte) 'P',
- (byte) 3,
+ (byte) 0,
(byte) 1,
(byte) 0,
(byte) 0
};
- public ProtocolEngineCreator_1_0_0_SASL()
+ public ProtocolEngineCreator_1_0_0()
{
}
@@ -56,7 +67,7 @@ public class ProtocolEngineCreator_1_0_0
public byte[] getHeaderIdentifier()
{
- return AMQP_SASL_1_0_0_HEADER;
+ return AMQP_1_0_0_HEADER;
}
public ServerProtocolEngine newProtocolEngine(Broker<?> broker,
@@ -65,10 +76,37 @@ public class ProtocolEngineCreator_1_0_0
Transport transport,
long id, final
AggregateTicker aggregateTicker)
{
- return new ProtocolEngine_1_0_0_SASL(network, broker, id, port,
transport, aggregateTicker);
+ final AuthenticationProvider<?> authenticationProvider =
port.getAuthenticationProvider();
+
+ Set<String> supportedMechanisms = new
HashSet<>(authenticationProvider.getMechanisms());
+
supportedMechanisms.removeAll(authenticationProvider.getDisabledMechanisms());
+ if(!transport.isSecure())
+ {
+
supportedMechanisms.removeAll(authenticationProvider.getSecureOnlyMechanisms());
+ }
+
+
+
if(supportedMechanisms.contains(AnonymousAuthenticationManager.MECHANISM_NAME)
+ ||
(supportedMechanisms.contains(ExternalAuthenticationManagerImpl.MECHANISM_NAME)
&& network.getPeerPrincipal() != null))
+ {
+ return new ProtocolEngine_1_0_0(network, broker, id, port,
transport, aggregateTicker, false);
+ }
+ else
+ {
+ LOGGER.info(
+ "Attempt to connect using AMQP 1.0 without using SASL
authentication on a port which does not support ANONYMOUS or EXTERNAL by "
+ + network.getRemoteAddress());
+ return null;
+ }
+ }
+
+ @Override
+ public byte[] getSuggestedAlternativeHeader()
+ {
+ return
ProtocolEngineCreator_1_0_0_SASL.getInstance().getHeaderIdentifier();
}
- private static ProtocolEngineCreator INSTANCE = new
ProtocolEngineCreator_1_0_0_SASL();
+ private static ProtocolEngineCreator INSTANCE = new
ProtocolEngineCreator_1_0_0();
public static ProtocolEngineCreator getInstance()
{
Modified:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java?rev=1684975&r1=1684974&r2=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java
Thu Jun 11 21:11:33 2015
@@ -65,7 +65,14 @@ public class ProtocolEngineCreator_1_0_0
Transport transport,
long id, final
AggregateTicker aggregateTicker)
{
- return new ProtocolEngine_1_0_0_SASL(network, broker, id, port,
transport, aggregateTicker);
+ return new ProtocolEngine_1_0_0(network, broker, id, port, transport,
aggregateTicker, true);
+ }
+
+
+ @Override
+ public byte[] getSuggestedAlternativeHeader()
+ {
+ return null;
}
private static ProtocolEngineCreator INSTANCE = new
ProtocolEngineCreator_1_0_0_SASL();
Copied:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0.java
(from r1684851,
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java)
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0.java?p2=qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0.java&p1=qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java&r1=1684851&r2=1684975&rev=1684975&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0.java
Thu Jun 11 21:11:33 2015
@@ -40,7 +40,9 @@ import org.slf4j.LoggerFactory;
import org.apache.qpid.amqp_1_0.codec.FrameWriter;
import org.apache.qpid.amqp_1_0.codec.ProtocolHandler;
+import org.apache.qpid.amqp_1_0.codec.ProtocolHeaderHandler;
import org.apache.qpid.amqp_1_0.framing.AMQFrame;
+import org.apache.qpid.amqp_1_0.framing.FrameHandler;
import org.apache.qpid.amqp_1_0.framing.OversizeFrameException;
import org.apache.qpid.amqp_1_0.framing.SASLFrameHandler;
import org.apache.qpid.amqp_1_0.transport.ConnectionEndpoint;
@@ -61,19 +63,23 @@ import org.apache.qpid.server.model.Tran
import org.apache.qpid.server.model.port.AmqpPort;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.security.SubjectCreator;
+import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
import org.apache.qpid.server.security.auth.UsernamePrincipal;
+import
org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
+import
org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManagerImpl;
import org.apache.qpid.server.util.Action;
import org.apache.qpid.transport.ByteBufferSender;
import org.apache.qpid.transport.network.AggregateTicker;
import org.apache.qpid.transport.network.NetworkConnection;
-public class ProtocolEngine_1_0_0_SASL implements ServerProtocolEngine,
FrameOutputHandler
+public class ProtocolEngine_1_0_0 implements ServerProtocolEngine,
FrameOutputHandler
{
public static final long CLOSE_REPONSE_TIMEOUT = 10000l;
private final AmqpPort<?> _port;
private final Transport _transport;
private final AggregateTicker _aggregateTicker;
+ private final boolean _useSASL;
private long _readBytes;
private long _writtenBytes;
@@ -87,7 +93,7 @@ public class ProtocolEngine_1_0_0_SASL i
private final AtomicReference<Action<ServerProtocolEngine>> _workListener
= new AtomicReference<>();
- private static final ByteBuffer HEADER =
+ private static final ByteBuffer SASL_LAYER_HEADER =
ByteBuffer.wrap(new byte[]
{
(byte)'A',
@@ -100,7 +106,7 @@ public class ProtocolEngine_1_0_0_SASL i
(byte) 0
});
- private static final ByteBuffer PROTOCOL_HEADER =
+ private static final ByteBuffer AMQP_LAYER_HEADER =
ByteBuffer.wrap(new byte[]
{
(byte)'A',
@@ -121,7 +127,6 @@ public class ProtocolEngine_1_0_0_SASL i
private byte _major;
private byte _minor;
private byte _revision;
- private PrintWriter _out;
private NetworkConnection _network;
private ByteBufferSender _sender;
private Connection_1_0 _connection;
@@ -147,18 +152,20 @@ public class ProtocolEngine_1_0_0_SASL i
- public ProtocolEngine_1_0_0_SASL(final NetworkConnection networkDriver,
- final Broker<?> broker,
- long id,
- AmqpPort<?> port,
- Transport transport,
- final AggregateTicker aggregateTicker)
+ public ProtocolEngine_1_0_0(final NetworkConnection networkDriver,
+ final Broker<?> broker,
+ long id,
+ AmqpPort<?> port,
+ Transport transport,
+ final AggregateTicker aggregateTicker,
+ final boolean useSASL)
{
_connectionId = id;
_broker = broker;
_port = port;
_transport = transport;
_aggregateTicker = aggregateTicker;
+ _useSASL = useSASL;
if(networkDriver != null)
{
setNetworkConnection(networkDriver, networkDriver.getSender());
@@ -247,7 +254,7 @@ public class ProtocolEngine_1_0_0_SASL i
Container container = new Container(_broker.getId().toString());
SubjectCreator subjectCreator =
_port.getAuthenticationProvider().getSubjectCreator(_transport.isSecure());
- _endpoint = new ConnectionEndpoint(container,
asSaslServerProvider(subjectCreator));
+ _endpoint = new ConnectionEndpoint(container, _useSASL ?
asSaslServerProvider(subjectCreator) : null);
_endpoint.setLogger(new ConnectionEndpoint.FrameReceiptLogger()
{
@Override
@@ -275,32 +282,58 @@ public class ProtocolEngine_1_0_0_SASL i
_endpoint.setConnectionEventListener(_connection);
_endpoint.setFrameOutputHandler(this);
- _endpoint.setSaslFrameOutput(this);
-
- _endpoint.setOnSaslComplete(new Runnable()
+ ByteBuffer headerResponse;
+ final List<String> mechanisms = subjectCreator.getMechanisms();
+ if(_useSASL)
{
- public void run()
+ _endpoint.setSaslFrameOutput(this);
+
+ _endpoint.setOnSaslComplete(new Runnable()
{
- if (_endpoint.isAuthenticated())
+ public void run()
{
- _sender.send(PROTOCOL_HEADER.duplicate());
- _sender.flush();
- }
- else
- {
- _network.close();
+ if (_endpoint.isAuthenticated())
+ {
+ _sender.send(AMQP_LAYER_HEADER.duplicate());
+ _sender.flush();
+ }
+ else
+ {
+ _network.close();
+ }
}
+ });
+ _frameHandler = new SASLFrameHandler(_endpoint);
+ headerResponse = SASL_LAYER_HEADER;
+ }
+ else
+ {
+
if(mechanisms.contains(ExternalAuthenticationManagerImpl.MECHANISM_NAME)
+ && _network.getPeerPrincipal() != null)
+ {
+ _connection.setUserPrincipal(new
AuthenticatedPrincipal(_network.getPeerPrincipal()));
}
- });
+ else
if(mechanisms.contains(AnonymousAuthenticationManager.MECHANISM_NAME))
+ {
+ _connection.setUserPrincipal(new
AuthenticatedPrincipal(AnonymousAuthenticationManager.ANONYMOUS_PRINCIPAL));
+ }
+ else
+ {
+ _network.close();
+ }
+
+ _frameHandler = new FrameHandler(_endpoint);
+ headerResponse = AMQP_LAYER_HEADER;
+ }
_frameWriter = new FrameWriter(_endpoint.getDescribedTypeRegistry());
- _frameHandler = new SASLFrameHandler(_endpoint);
- _sender.send(HEADER.duplicate());
+ _sender.send(headerResponse.duplicate());
_sender.flush();
- List<String> mechanisms = subjectCreator.getMechanisms();
- _endpoint.initiateSASL(mechanisms.toArray(new
String[mechanisms.size()]));
-
+ if(_useSASL)
+ {
+ _endpoint.initiateSASL(mechanisms.toArray(new
String[mechanisms.size()]));
+ }
}
@@ -317,7 +350,7 @@ public class ProtocolEngine_1_0_0_SASL i
@Override
public Principal getAuthenticatedPrincipal(SaslServer server)
{
- return new UsernamePrincipal(server.getAuthorizationID());
+ return new AuthenticatedPrincipal(new
UsernamePrincipal(server.getAuthorizationID()));
}
};
}
@@ -562,11 +595,6 @@ public class ProtocolEngine_1_0_0_SASL i
}
- public void setLogOutput(final PrintWriter out)
- {
- _out = out;
- }
-
public long getConnectionId()
{
return _connectionId;
Added:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0Test.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0Test.java?rev=1684975&view=auto
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0Test.java
(added)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0Test.java
Thu Jun 11 21:11:33 2015
@@ -0,0 +1,290 @@
+/*
+ *
+ * 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.protocol.v1_0;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.nio.ByteBuffer;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import javax.security.auth.Subject;
+import javax.security.sasl.Sasl;
+
+import org.mockito.ArgumentCaptor;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import org.apache.qpid.amqp_1_0.codec.FrameWriter;
+import org.apache.qpid.amqp_1_0.framing.AMQFrame;
+import org.apache.qpid.amqp_1_0.framing.SASLFrame;
+import org.apache.qpid.amqp_1_0.type.Symbol;
+import org.apache.qpid.amqp_1_0.type.codec.AMQPDescribedTypeRegistry;
+import org.apache.qpid.amqp_1_0.type.security.SaslInit;
+import org.apache.qpid.amqp_1_0.type.transport.Open;
+import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
+import org.apache.qpid.server.configuration.updater.TaskExecutorImpl;
+import org.apache.qpid.server.connection.ConnectionRegistry;
+import org.apache.qpid.server.connection.IConnectionRegistry;
+import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.BrokerModel;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.port.AmqpPort;
+import org.apache.qpid.server.protocol.AMQConnectionModel;
+import org.apache.qpid.server.security.SubjectCreator;
+import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
+import
org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
+import
org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory;
+import
org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManagerImpl;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
+import org.apache.qpid.test.utils.QpidTestCase;
+import org.apache.qpid.transport.ByteBufferSender;
+import org.apache.qpid.transport.network.AggregateTicker;
+import org.apache.qpid.transport.network.NetworkConnection;
+
+public class ProtocolEngine_1_0_0Test extends QpidTestCase
+{
+ private ProtocolEngine_1_0_0 _protocolEngine_1_0_0;
+ private NetworkConnection _networkConnection;
+ private Broker<?> _broker;
+ private AmqpPort<?> _port;
+ private SubjectCreator _subjectCreator;
+ private AuthenticationProvider _authenticationProvider;
+ private List<ByteBuffer> _sentBuffers;
+ private FrameWriter _frameWriter;
+ private IConnectionRegistry _connectionRegistry;
+ private Connection_1_0 _connection;
+
+ @Override
+ public void setUp() throws Exception
+ {
+ super.setUp();
+ _networkConnection = mock(NetworkConnection.class);
+ _broker = mock(Broker.class);
+ when(_broker.getModel()).thenReturn(BrokerModel.getInstance());
+ final TaskExecutor taskExecutor = new TaskExecutorImpl();
+ taskExecutor.start();
+ when(_broker.getChildExecutor()).thenReturn(taskExecutor);
+ when(_broker.getTaskExecutor()).thenReturn(taskExecutor);
+ when(_broker.getId()).thenReturn(UUID.randomUUID());
+ _port = mock(AmqpPort.class);
+ _subjectCreator = mock(SubjectCreator.class);
+ _authenticationProvider = mock(AuthenticationProvider.class);
+
when(_port.getAuthenticationProvider()).thenReturn(_authenticationProvider);
+ VirtualHostImpl virtualHost = mock(VirtualHostImpl.class);
+ _connectionRegistry = mock(IConnectionRegistry.class);
+ final ArgumentCaptor<AMQConnectionModel> connectionCaptor =
ArgumentCaptor.forClass(AMQConnectionModel.class);
+ doAnswer(new Answer()
+ {
+ @Override
+ public Object answer(final InvocationOnMock invocation) throws
Throwable
+ {
+ _connection = (Connection_1_0) connectionCaptor.getValue();
+ return null;
+ }
+
}).when(_connectionRegistry).registerConnection(connectionCaptor.capture());
+
when(virtualHost.getConnectionRegistry()).thenReturn(_connectionRegistry);
+ when(_port.getVirtualHost(anyString())).thenReturn(virtualHost);
+
when(_authenticationProvider.getSubjectCreator(anyBoolean())).thenReturn(_subjectCreator);
+
+ final ArgumentCaptor<Principal> userCaptor =
ArgumentCaptor.forClass(Principal.class);
+
when(_subjectCreator.createSubjectWithGroups(userCaptor.capture())).then(new
Answer<Subject>()
+ {
+ @Override
+ public Subject answer(final InvocationOnMock invocation) throws
Throwable
+ {
+ Subject subject = new Subject();
+ subject.getPrincipals().add(userCaptor.getValue());
+ return subject;
+ }
+ });
+
+ final ByteBufferSender sender = mock(ByteBufferSender.class);
+ when(_networkConnection.getSender()).thenReturn(sender);
+
+ final ArgumentCaptor<ByteBuffer> byteBufferCaptor =
ArgumentCaptor.forClass(ByteBuffer.class);
+
+ doAnswer(new Answer()
+ {
+ @Override
+ public Object answer(final InvocationOnMock invocation) throws
Throwable
+ {
+ _sentBuffers.add(byteBufferCaptor.getValue());
+ return null;
+ }
+ }).when(sender).send(byteBufferCaptor.capture());
+ _sentBuffers = new ArrayList<>();
+
+ AMQPDescribedTypeRegistry registry =
AMQPDescribedTypeRegistry.newInstance().registerTransportLayer()
+ .registerMessagingLayer()
+ .registerTransactionLayer()
+ .registerSecurityLayer();
+
+ _frameWriter = new FrameWriter(registry);
+ }
+
+ public void testProtocolEngineWithNoSaslNonTLSandAnon() throws Exception
+ {
+ allowMechanisms(AnonymousAuthenticationManager.MECHANISM_NAME);
+ final boolean useSASL = false;
+
+ createEngine(useSASL, Transport.TCP);
+
+
_protocolEngine_1_0_0.received(ByteBuffer.wrap(ProtocolEngineCreator_1_0_0.getInstance().getHeaderIdentifier()));
+
+ Open open = new Open();
+ _frameWriter.setValue(AMQFrame.createAMQFrame((short)0,open));
+ ByteBuffer buf = ByteBuffer.allocate(64*1024);
+ _frameWriter.writeToBuffer(buf);
+ buf.flip();
+ _protocolEngine_1_0_0.received(buf);
+
+
verify(_connectionRegistry).registerConnection(any(AMQConnectionModel.class));
+ AuthenticatedPrincipal principal = (AuthenticatedPrincipal)
_connection.getAuthorizedPrincipal();
+ assertNotNull(principal);
+ assertEquals(principal, new
AuthenticatedPrincipal(AnonymousAuthenticationManager.ANONYMOUS_PRINCIPAL));
+ }
+
+
+ public void testProtocolEngineWithNoSaslNonTLSandNoAnon() throws Exception
+ {
+ allowMechanisms("foo");
+ final boolean useSASL = false;
+
+ createEngine(useSASL, Transport.TCP);
+
+
_protocolEngine_1_0_0.received(ByteBuffer.wrap(ProtocolEngineCreator_1_0_0.getInstance().getHeaderIdentifier()));
+
+ Open open = new Open();
+ _frameWriter.setValue(AMQFrame.createAMQFrame((short)0,open));
+ ByteBuffer buf = ByteBuffer.allocate(64*1024);
+ _frameWriter.writeToBuffer(buf);
+ buf.flip();
+ _protocolEngine_1_0_0.received(buf);
+
+ verify(_connectionRegistry,
never()).registerConnection(any(AMQConnectionModel.class));
+ verify(_networkConnection).close();
+ }
+
+
+ public void testProtocolEngineWithNoSaslTLSandExternal() throws Exception
+ {
+ final Principal principal = new Principal()
+ {
+ @Override
+ public String getName()
+ {
+ return "test";
+ }
+ };
+ when(_networkConnection.getPeerPrincipal()).thenReturn(principal);
+
+ allowMechanisms(ExternalAuthenticationManagerImpl.MECHANISM_NAME);
+ final boolean useSASL = false;
+
+ createEngine(useSASL, Transport.SSL);
+
_protocolEngine_1_0_0.received(ByteBuffer.wrap(ProtocolEngineCreator_1_0_0.getInstance().getHeaderIdentifier()));
+
+ Open open = new Open();
+ _frameWriter.setValue(AMQFrame.createAMQFrame((short)0,open));
+ ByteBuffer buf = ByteBuffer.allocate(64*1024);
+ _frameWriter.writeToBuffer(buf);
+ buf.flip();
+ _protocolEngine_1_0_0.received(buf);
+
+
verify(_connectionRegistry).registerConnection(any(AMQConnectionModel.class));
+ AuthenticatedPrincipal authPrincipal = (AuthenticatedPrincipal)
_connection.getAuthorizedPrincipal();
+ assertNotNull(authPrincipal);
+ assertEquals(authPrincipal, new AuthenticatedPrincipal(principal));
+ }
+
+ public void testProtocolEngineWithSaslNonTLSandAnon() throws Exception
+ {
+ final Map<String, Object> attrs = new HashMap<>();
+ attrs.put(ConfiguredObject.NAME, getTestName());
+ final AuthenticationProvider anonymousAuthenticationManager =
+ (new AnonymousAuthenticationManagerFactory())
+ .create(
+ null,
+ attrs,
+ _broker);
+
when(_port.getAuthenticationProvider()).thenReturn(anonymousAuthenticationManager);
+ allowMechanisms(AnonymousAuthenticationManager.MECHANISM_NAME);
+ final boolean useSASL = true;
+
+ createEngine(useSASL, Transport.TCP);
+
+
_protocolEngine_1_0_0.received(ByteBuffer.wrap(ProtocolEngineCreator_1_0_0_SASL.getInstance().getHeaderIdentifier()));
+
+ SaslInit init = new SaslInit();
+ init.setMechanism(Symbol.valueOf("ANONYMOUS"));
+ _frameWriter.setValue(new SASLFrame(init));
+ ByteBuffer buf = ByteBuffer.allocate(64*1024);
+ _frameWriter.writeToBuffer(buf);
+
+ buf.flip();
+ _protocolEngine_1_0_0.received(buf);
+
+
_protocolEngine_1_0_0.received(ByteBuffer.wrap(ProtocolEngineCreator_1_0_0.getInstance().getHeaderIdentifier()));
+
+ Open open = new Open();
+ _frameWriter.setValue(AMQFrame.createAMQFrame((short)0,open));
+ buf = ByteBuffer.allocate(64*1024);
+ _frameWriter.writeToBuffer(buf);
+ buf.flip();
+ _protocolEngine_1_0_0.received(buf);
+
+
verify(_connectionRegistry).registerConnection(any(AMQConnectionModel.class));
+ AuthenticatedPrincipal principal = (AuthenticatedPrincipal)
_connection.getAuthorizedPrincipal();
+ assertNotNull(principal);
+ assertEquals(principal, new
AuthenticatedPrincipal(AnonymousAuthenticationManager.ANONYMOUS_PRINCIPAL));
+ }
+
+
+ private void createEngine(final boolean useSASL, Transport transport)
+ {
+ _protocolEngine_1_0_0 = new ProtocolEngine_1_0_0(_networkConnection,
+ _broker, 1, _port,
transport, new AggregateTicker(),
+ useSASL);
+ }
+
+ private void allowMechanisms(String... mechanisms)
+ {
+
when(_subjectCreator.getMechanisms()).thenReturn(Arrays.asList(mechanisms));
+ }
+}
Propchange:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0Test.java
------------------------------------------------------------------------------
svn:eol-style = native
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]