You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2017/12/15 01:45:21 UTC
[1/2] activemq-artemis git commit: [ARTEMIS-1552] ensure gssapi sasl
mech can deal with empty receive buffer
Repository: activemq-artemis
Updated Branches:
refs/heads/master dec4a1b4d -> a3e3adf89
[ARTEMIS-1552] ensure gssapi sasl mech can deal with empty receive buffer
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b62e9875
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b62e9875
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b62e9875
Branch: refs/heads/master
Commit: b62e9875fed987f341b946082f4e28866e54b979
Parents: dec4a1b
Author: gtully <ga...@gmail.com>
Authored: Tue Dec 12 14:04:06 2017 +0000
Committer: Justin Bertram <jb...@apache.org>
Committed: Thu Dec 14 19:45:04 2017 -0600
----------------------------------------------------------------------
.../protocol/amqp/sasl/GSSAPIServerSASL.java | 5 +-
.../integration/amqp/JMSSaslGssapiTest.java | 97 ++++++++++++++++++++
2 files changed, 101 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b62e9875/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/sasl/GSSAPIServerSASL.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/sasl/GSSAPIServerSASL.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/sasl/GSSAPIServerSASL.java
index e89d548..c9b43fe 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/sasl/GSSAPIServerSASL.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/sasl/GSSAPIServerSASL.java
@@ -74,7 +74,10 @@ public class GSSAPIServerSASL implements ServerSASL {
}));
}
- byte[] challenge = Subject.doAs(jaasId, (PrivilegedExceptionAction<byte[]>) () -> saslServer.evaluateResponse(bytes));
+ byte[] challenge = null;
+ if (bytes.length > 0) {
+ challenge = Subject.doAs(jaasId, (PrivilegedExceptionAction<byte[]>) () -> saslServer.evaluateResponse(bytes));
+ }
if (saslServer.isComplete()) {
result = new GSSAPISASLResult(true, new KerberosPrincipal(saslServer.getAuthorizationID()));
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b62e9875/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSSaslGssapiTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSSaslGssapiTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSSaslGssapiTest.java
index d66c83d..5a93154 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSSaslGssapiTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSSaslGssapiTest.java
@@ -25,16 +25,34 @@ import javax.jms.TextMessage;
import java.io.File;
import java.net.URI;
import java.net.URL;
+import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector;
+import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
import org.apache.activemq.artemis.core.security.Role;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
+import org.apache.activemq.artemis.protocol.amqp.broker.ProtonProtocolManagerFactory;
+import org.apache.activemq.artemis.protocol.amqp.client.AMQPClientConnectionFactory;
+import org.apache.activemq.artemis.protocol.amqp.client.ProtonClientConnectionManager;
+import org.apache.activemq.artemis.protocol.amqp.client.ProtonClientProtocolManager;
+import org.apache.activemq.artemis.protocol.amqp.proton.handler.EventHandler;
+import org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler;
+import org.apache.activemq.artemis.protocol.amqp.sasl.ClientSASL;
+import org.apache.activemq.artemis.protocol.amqp.sasl.ClientSASLFactory;
import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
+import org.apache.activemq.artemis.tests.util.Wait;
import org.apache.activemq.artemis.utils.RandomUtil;
import org.apache.hadoop.minikdc.MiniKdc;
import org.apache.qpid.jms.JmsConnectionFactory;
+import org.apache.qpid.jms.sasl.GssapiMechanism;
+import org.apache.qpid.proton.amqp.Symbol;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -164,4 +182,83 @@ public class JMSSaslGssapiTest extends JMSClientTestSupport {
assertTrue(expected.getMessage().contains("SASL"));
}
}
+
+ @Test
+ public void testOutboundWithSlowMech() throws Exception {
+ final Map<String, Object> config = new LinkedHashMap<>(); config.put(TransportConstants.HOST_PROP_NAME, "localhost");
+ config.put(TransportConstants.PORT_PROP_NAME, String.valueOf(AMQP_PORT));
+ final ClientSASLFactory clientSASLFactory = new ClientSASLFactory() {
+ @Override
+ public ClientSASL chooseMechanism(String[] availableMechanims) {
+ GssapiMechanism gssapiMechanism = new GssapiMechanism();
+ return new ClientSASL() {
+ @Override
+ public String getName() {
+ return gssapiMechanism.getName();
+ }
+
+ @Override
+ public byte[] getInitialResponse() {
+ gssapiMechanism.setUsername("client");
+ gssapiMechanism.setServerName("localhost");
+ try {
+ return gssapiMechanism.getInitialResponse();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return new byte[0];
+ }
+
+ @Override
+ public byte[] getResponse(byte[] challenge) {
+ try {
+ // simulate a slow client
+ TimeUnit.SECONDS.sleep(4);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ try {
+ return gssapiMechanism.getChallengeResponse(challenge);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return new byte[0];
+ }
+ };
+ }
+ };
+
+ final AtomicBoolean connectionOpened = new AtomicBoolean();
+ final AtomicBoolean authFailed = new AtomicBoolean();
+
+ EventHandler eventHandler = new EventHandler() {
+ @Override
+ public void onRemoteOpen(org.apache.qpid.proton.engine.Connection connection) throws Exception {
+ connectionOpened.set(true);
+ }
+
+ @Override
+ public void onAuthFailed(ProtonHandler protonHandler, org.apache.qpid.proton.engine.Connection connection) {
+ authFailed.set(true);
+ }
+ };
+
+ ProtonClientConnectionManager lifeCycleListener = new ProtonClientConnectionManager(new AMQPClientConnectionFactory(server, "myid", Collections.singletonMap(Symbol.getSymbol("myprop"), "propvalue"), 5000), Optional.of(eventHandler), clientSASLFactory);
+ ProtonClientProtocolManager protocolManager = new ProtonClientProtocolManager(new ProtonProtocolManagerFactory(), server);
+ NettyConnector connector = new NettyConnector(config, lifeCycleListener, lifeCycleListener, server.getExecutorFactory().getExecutor(), server.getExecutorFactory().getExecutor(), server.getScheduledPool(), protocolManager);
+ connector.start();
+ connector.createConnection();
+
+ try {
+ Wait.assertEquals(1, server::getConnectionCount);
+ Wait.assertTrue(connectionOpened::get);
+ Wait.assertFalse(authFailed::get);
+
+ lifeCycleListener.stop();
+
+ Wait.assertEquals(0, server::getConnectionCount);
+ } finally {
+ lifeCycleListener.stop();
+ }
+ }
}
[2/2] activemq-artemis git commit: This closes #1703
Posted by jb...@apache.org.
This closes #1703
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/a3e3adf8
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/a3e3adf8
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/a3e3adf8
Branch: refs/heads/master
Commit: a3e3adf894985e793b753877b01151aee5d653c7
Parents: dec4a1b b62e987
Author: Justin Bertram <jb...@apache.org>
Authored: Thu Dec 14 19:45:05 2017 -0600
Committer: Justin Bertram <jb...@apache.org>
Committed: Thu Dec 14 19:45:05 2017 -0600
----------------------------------------------------------------------
.../protocol/amqp/sasl/GSSAPIServerSASL.java | 5 +-
.../integration/amqp/JMSSaslGssapiTest.java | 97 ++++++++++++++++++++
2 files changed, 101 insertions(+), 1 deletion(-)
----------------------------------------------------------------------