You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/10/25 21:44:50 UTC
[3/4] activemq-artemis git commit: ARTEMIS-1473 fix default user/pass
system props
ARTEMIS-1473 fix default user/pass system props
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/c93a2506
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/c93a2506
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/c93a2506
Branch: refs/heads/master
Commit: c93a25063519f9cc55fb3f614af66fcdcfe7e4a1
Parents: ac73f38
Author: Justin Bertram <jb...@apache.org>
Authored: Wed Oct 25 12:45:17 2017 -0500
Committer: Justin Bertram <jb...@apache.org>
Committed: Wed Oct 25 14:56:09 2017 -0500
----------------------------------------------------------------------
.../jms/client/DefaultConnectionProperties.java | 38 +++++----
.../artemis/jms/tests/SecurityTest.java | 87 +++++++++++++++++++-
2 files changed, 106 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/c93a2506/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/DefaultConnectionProperties.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/DefaultConnectionProperties.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/DefaultConnectionProperties.java
index 328ab71..aba1c8b 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/DefaultConnectionProperties.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/DefaultConnectionProperties.java
@@ -34,12 +34,19 @@ import java.security.PrivilegedAction;
*/
public class DefaultConnectionProperties {
- public static final String DEFAULT_BROKER_HOST;
- public static final int DEFAULT_BROKER_PORT;
- public static final String DEFAULT_BROKER_BIND_URL;
- public static final String DEFAULT_BROKER_URL;
- public static final String DEFAULT_USER;
- public static final String DEFAULT_PASSWORD;
+ public static final String AMQ_HOST = "AMQ_HOST";
+ public static final String AMQ_PORT = "AMQ_PORT";
+ public static final String AMQ_USER = "AMQ_USER";
+ public static final String AMQ_PASSWORD = "AMQ_PASSWORD";
+ public static final String BROKER_BIND_URL = "BROKER_BIND_URL";
+ public static final String PREFIX = "org.apache.activemq.";
+
+ public static String DEFAULT_BROKER_HOST;
+ public static int DEFAULT_BROKER_PORT;
+ public static String DEFAULT_BROKER_BIND_URL;
+ public static String DEFAULT_BROKER_URL;
+ public static String DEFAULT_USER;
+ public static String DEFAULT_PASSWORD;
static String getProperty(final String defaultValue, final String... propertyNames) {
return AccessController.doPrivileged(new PrivilegedAction<String>() {
@@ -57,21 +64,20 @@ public class DefaultConnectionProperties {
}
static {
- String host = getProperty("localhost", "AMQ_HOST", "org.apache.activemq.AMQ_HOST");
- String port = getProperty("61616", "AMQ_PORT", "org.apache.activemq.AMQ_PORT");
+ initialize();
+ }
+
+ public static void initialize() {
+ String host = getProperty("localhost", AMQ_HOST, PREFIX + AMQ_HOST);
+ String port = getProperty("61616", AMQ_PORT, PREFIX + AMQ_PORT);
DEFAULT_BROKER_HOST = host;
DEFAULT_BROKER_PORT = Integer.parseInt(port);
- String url = getProperty("tcp://" + host + ":" + port, "org.apache.activemq.BROKER_BIND_URL", "BROKER_BIND_URL");
- DEFAULT_USER = getProperty(null, "AMQ_USER", "org.apache.activemq.AMQ_USER");
- DEFAULT_PASSWORD = getProperty(null, "AMQ_PASSWORD", "org.apache.activemq.AMQ_PASSWORD");
-
- if (DEFAULT_USER != null && DEFAULT_PASSWORD != null) {
- url += "?user=" + DEFAULT_USER + "&password=" + DEFAULT_PASSWORD;
- }
+ String url = getProperty("tcp://" + host + ":" + port, PREFIX + BROKER_BIND_URL, BROKER_BIND_URL);
+ DEFAULT_USER = getProperty(null, AMQ_USER, PREFIX + AMQ_USER);
+ DEFAULT_PASSWORD = getProperty(null, AMQ_PASSWORD, PREFIX + AMQ_PASSWORD);
DEFAULT_BROKER_BIND_URL = url;
// TODO: improve this once we implement failover:// as ActiveMQ5 does
DEFAULT_BROKER_URL = DEFAULT_BROKER_BIND_URL;
}
-
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/c93a2506/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SecurityTest.java
----------------------------------------------------------------------
diff --git a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SecurityTest.java b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SecurityTest.java
index 3d281df..d7137ae 100644
--- a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SecurityTest.java
+++ b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SecurityTest.java
@@ -22,7 +22,12 @@ import javax.jms.IllegalStateException;
import javax.jms.JMSSecurityException;
import javax.jms.Session;
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
+import org.apache.activemq.artemis.jms.client.DefaultConnectionProperties;
import org.apache.activemq.artemis.jms.tests.util.ProxyAssertSupport;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
/**
@@ -31,10 +36,40 @@ import org.junit.Test;
* This test must be run with the Test security config. on the server
*/
public class SecurityTest extends JMSTestCase {
+ private String originalAmqUser;
+ private String originalAmqPassword;
+ private String originalBrokerBindUrl;
- /**
- * Login with no user, no password Should allow login (equivalent to guest)
- */
+ @Before
+ public void setupProperty() {
+ originalAmqUser = System.getProperty(DefaultConnectionProperties.AMQ_USER);
+ originalAmqPassword = System.getProperty(DefaultConnectionProperties.AMQ_PASSWORD);
+ originalBrokerBindUrl = System.getProperty(DefaultConnectionProperties.BROKER_BIND_URL);
+ }
+
+ @After
+ public void clearProperty() {
+ if (originalAmqUser == null) {
+ System.clearProperty(DefaultConnectionProperties.AMQ_USER);
+ } else {
+ System.setProperty(DefaultConnectionProperties.AMQ_USER, originalAmqUser);
+ }
+ if (originalAmqPassword == null) {
+ System.clearProperty(DefaultConnectionProperties.AMQ_PASSWORD);
+ } else {
+ System.setProperty(DefaultConnectionProperties.AMQ_PASSWORD, originalAmqPassword);
+ }
+ if (originalBrokerBindUrl == null) {
+ System.clearProperty(DefaultConnectionProperties.BROKER_BIND_URL);
+ } else {
+ System.setProperty(DefaultConnectionProperties.BROKER_BIND_URL, originalBrokerBindUrl);
+ }
+ }
+
+
+ /**
+ * Login with no user, no password Should allow login (equivalent to guest)
+ */
@Test
public void testLoginNoUserNoPassword() throws Exception {
createConnection();
@@ -61,6 +96,34 @@ public class SecurityTest extends JMSTestCase {
}
/**
+ * Login with valid user and password
+ * Should allow
+ */
+ @Test
+ public void testLoginValidUserAndPasswordSystemProperty() throws Exception {
+ System.setProperty(DefaultConnectionProperties.AMQ_USER, "guest");
+ System.setProperty(DefaultConnectionProperties.AMQ_PASSWORD, "guest");
+ DefaultConnectionProperties.initialize();
+ ConnectionFactory cf = new ActiveMQConnectionFactory();
+ Connection conn = addConnection(cf.createConnection());
+ }
+
+ /**
+ * Login with valid user and password
+ * Should allow
+ */
+ @Test
+ public void testLoginValidUserAndPasswordSystemPropertyWithAdditionalProperties() throws Exception {
+ System.setProperty(DefaultConnectionProperties.AMQ_USER, "guest");
+ System.setProperty(DefaultConnectionProperties.AMQ_PASSWORD, "guest");
+ System.setProperty(DefaultConnectionProperties.BROKER_BIND_URL, "tcp://localhost:61616?compressLargeMessage=true");
+ DefaultConnectionProperties.initialize();
+ ConnectionFactory cf = new ActiveMQConnectionFactory();
+ Connection conn = addConnection(cf.createConnection());
+ Assert.assertTrue(((ActiveMQConnectionFactory) cf).isCompressLargeMessage());
+ }
+
+ /**
* Login with valid user and invalid password
* Should allow
*/
@@ -75,6 +138,24 @@ public class SecurityTest extends JMSTestCase {
}
/**
+ * Login with valid user and invalid password
+ * Should allow
+ */
+ @Test
+ public void testLoginValidUserInvalidPasswordSystemProperty() throws Exception {
+ System.setProperty(DefaultConnectionProperties.AMQ_USER, "guest");
+ System.setProperty(DefaultConnectionProperties.AMQ_PASSWORD, "not.the.valid.password");
+ DefaultConnectionProperties.initialize();
+ try {
+ ConnectionFactory cf = new ActiveMQConnectionFactory();
+ Connection conn1 = addConnection(cf.createConnection());
+ ProxyAssertSupport.fail();
+ } catch (JMSSecurityException e) {
+ // Expected
+ }
+ }
+
+ /**
* Login with invalid user and invalid password
* Should allow
*/