ARTEMIS-1846 fix activemq.usemaskedpassword in URL

Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/a6fe2559
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/a6fe2559
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/a6fe2559

Branch: refs/heads/master
Commit: a6fe25599cb73555642fa0ed72740279844604f7
Parents: 541dfc6
Author: Justin Bertram <[email protected]>
Authored: Thu May 3 10:28:05 2018 -0500
Committer: Clebert Suconic <[email protected]>
Committed: Thu May 3 12:09:58 2018 -0400

----------------------------------------------------------------------
 .../artemis/utils/ConfigurationHelper.java      |  8 +-
 .../ssl/CoreClientOverOneWaySSLTest.java        | 80 ++++++++++++++++++++
 2 files changed, 87 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a6fe2559/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/ConfigurationHelper.java
----------------------------------------------------------------------
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/ConfigurationHelper.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/ConfigurationHelper.java
index 4367318..3b2647c 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/ConfigurationHelper.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/ConfigurationHelper.java
@@ -162,7 +162,13 @@ public class ConfigurationHelper {
       }
 
       String value = prop.toString();
-      Boolean useMask = (Boolean) props.get(defaultMaskPassword);
+      Object useMaskObject = props.get(defaultMaskPassword);
+      Boolean useMask;
+      if (useMaskObject instanceof String) {
+         useMask = Boolean.parseBoolean((String)useMaskObject);
+      } else {
+         useMask = (Boolean) useMaskObject;
+      }
       final String classImpl = (String) props.get(defaultPasswordCodec);
       try {
          return PasswordMaskingUtil.resolveMask(useMask, value, classImpl);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a6fe2559/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
----------------------------------------------------------------------
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
index c9bf35e..aeb7524 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
@@ -44,6 +44,8 @@ import 
org.apache.activemq.artemis.core.remoting.impl.ssl.SSLSupport;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
 import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
 import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
+import org.apache.activemq.artemis.utils.DefaultSensitiveStringCodec;
+import org.apache.activemq.artemis.utils.PasswordMaskingUtil;
 import org.apache.activemq.artemis.utils.RandomUtil;
 import org.junit.Assert;
 import org.junit.Before;
@@ -133,6 +135,84 @@ public class CoreClientOverOneWaySSLTest extends 
ActiveMQTestBase {
    }
 
    @Test
+   public void testOneWaySSLwithURL() throws Exception {
+      createCustomSslServer();
+      String text = RandomUtil.randomString();
+
+      ServerLocator locator = 
addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider="
 + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + 
";trustStorePassword=" + PASSWORD));
+      ClientSessionFactory sf = 
addSessionFactory(createSessionFactory(locator));
+      ClientSession session = addClientSession(sf.createSession(false, true, 
true));
+      session.createQueue(CoreClientOverOneWaySSLTest.QUEUE, 
CoreClientOverOneWaySSLTest.QUEUE, false);
+      ClientProducer producer = 
addClientProducer(session.createProducer(CoreClientOverOneWaySSLTest.QUEUE));
+
+      ClientMessage message = createTextMessage(session, text);
+      producer.send(message);
+
+      ClientConsumer consumer = 
addClientConsumer(session.createConsumer(CoreClientOverOneWaySSLTest.QUEUE));
+      session.start();
+
+      ClientMessage m = consumer.receive(1000);
+      Assert.assertNotNull(m);
+      Assert.assertEquals(text, m.getBodyBuffer().readString());
+   }
+
+   @Test
+   public void testOneWaySSLwithURLandMaskedPasswordProperty() throws 
Exception {
+      createCustomSslServer();
+      String text = RandomUtil.randomString();
+
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
+      Map<String, String> params = new HashMap<>();
+      codec.init(params);
+
+      String masked = codec.encode(PASSWORD);
+
+      ServerLocator locator = 
addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider="
 + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + 
";trustStorePassword=" + masked + ";activemq.usemaskedpassword=true"));
+      ClientSessionFactory sf = 
addSessionFactory(createSessionFactory(locator));
+      ClientSession session = addClientSession(sf.createSession(false, true, 
true));
+      session.createQueue(CoreClientOverOneWaySSLTest.QUEUE, 
CoreClientOverOneWaySSLTest.QUEUE, false);
+      ClientProducer producer = 
addClientProducer(session.createProducer(CoreClientOverOneWaySSLTest.QUEUE));
+
+      ClientMessage message = createTextMessage(session, text);
+      producer.send(message);
+
+      ClientConsumer consumer = 
addClientConsumer(session.createConsumer(CoreClientOverOneWaySSLTest.QUEUE));
+      session.start();
+
+      ClientMessage m = consumer.receive(1000);
+      Assert.assertNotNull(m);
+      Assert.assertEquals(text, m.getBodyBuffer().readString());
+   }
+
+   @Test
+   public void testOneWaySSLwithURLandMaskedPasswordENCSyntax() throws 
Exception {
+      createCustomSslServer();
+      String text = RandomUtil.randomString();
+
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
+      Map<String, String> params = new HashMap<>();
+      codec.init(params);
+
+      String masked = codec.encode(PASSWORD);
+
+      ServerLocator locator = 
addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider="
 + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + 
";trustStorePassword=ENC(" + masked + ")"));
+      ClientSessionFactory sf = 
addSessionFactory(createSessionFactory(locator));
+      ClientSession session = addClientSession(sf.createSession(false, true, 
true));
+      session.createQueue(CoreClientOverOneWaySSLTest.QUEUE, 
CoreClientOverOneWaySSLTest.QUEUE, false);
+      ClientProducer producer = 
addClientProducer(session.createProducer(CoreClientOverOneWaySSLTest.QUEUE));
+
+      ClientMessage message = createTextMessage(session, text);
+      producer.send(message);
+
+      ClientConsumer consumer = 
addClientConsumer(session.createConsumer(CoreClientOverOneWaySSLTest.QUEUE));
+      session.start();
+
+      ClientMessage m = consumer.receive(1000);
+      Assert.assertNotNull(m);
+      Assert.assertEquals(text, m.getBodyBuffer().readString());
+   }
+
+   @Test
    public void testOneWaySSLUsingDefaultSslContext() throws Exception {
       createCustomSslServer();
       String text = RandomUtil.randomString();

Reply via email to