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 2020/11/05 16:39:42 UTC

[activemq-artemis] branch master updated: ARTEMIS-2976 Remove password before creating server locator

This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/master by this push:
     new 14ec3cb  ARTEMIS-2976 Remove password before creating server locator
     new fc1b34e  This closes #3329
14ec3cb is described below

commit 14ec3cb7b025ac212f7fd33d5e72930f6be84574
Author: Domenico Francesco Bruscino <br...@apache.org>
AuthorDate: Thu Nov 5 10:23:23 2020 +0100

    ARTEMIS-2976 Remove password before creating server locator
---
 .../org/apache/activemq/artemis/utils/uri/BeanSupport.java  |  4 ++++
 .../uri/schema/serverLocator/InVMServerLocatorSchema.java   |  1 +
 .../schema/serverLocator/JGroupsServerLocatorSchema.java    |  4 ++--
 .../uri/schema/serverLocator/TCPServerLocatorSchema.java    |  5 +++--
 .../uri/schema/serverLocator/UDPServerLocatorSchema.java    |  3 ++-
 .../protocol/amqp/broker/ProtonProtocolManagerFactory.java  |  2 +-
 .../protocol/hornetq/HornetQProtocolManagerFactory.java     |  2 +-
 .../core/protocol/mqtt/MQTTProtocolManagerFactory.java      |  2 +-
 .../protocol/openwire/OpenWireProtocolManagerFactory.java   |  2 +-
 .../core/protocol/stomp/StompProtocolManagerFactory.java    |  2 +-
 .../core/protocol/core/impl/CoreProtocolManagerFactory.java |  2 +-
 .../spi/core/protocol/AbstractProtocolManagerFactory.java   | 13 -------------
 12 files changed, 18 insertions(+), 24 deletions(-)

diff --git a/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/uri/BeanSupport.java b/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/uri/BeanSupport.java
index d1719ea..cbacf01 100644
--- a/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/uri/BeanSupport.java
+++ b/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/uri/BeanSupport.java
@@ -71,6 +71,10 @@ public class BeanSupport {
       return obj;
    }
 
+   public static <T> void stripPasswords(Map<String, T> properties) {
+      properties.entrySet().removeIf(entry -> entry.getKey().toLowerCase().contains("password"));
+   }
+
    public static <P> P setProperties(P bean, Properties properties)
       throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
       synchronized (beanUtils) {
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/InVMServerLocatorSchema.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/InVMServerLocatorSchema.java
index 1831c74..df07c79 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/InVMServerLocatorSchema.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/InVMServerLocatorSchema.java
@@ -38,6 +38,7 @@ public class InVMServerLocatorSchema extends AbstractServerLocatorSchema {
    protected ServerLocator internalNewObject(URI uri, Map<String, String> query, String name) throws Exception {
       TransportConfiguration tc = InVMTransportConfigurationSchema.createTransportConfiguration(uri, query, name, "org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory");
       ServerLocator factory = ActiveMQClient.createServerLocatorWithoutHA(tc);
+      BeanSupport.stripPasswords(query);
       return BeanSupport.setData(uri, factory, query);
    }
 
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/JGroupsServerLocatorSchema.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/JGroupsServerLocatorSchema.java
index fb5b408..830e6a3 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/JGroupsServerLocatorSchema.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/JGroupsServerLocatorSchema.java
@@ -38,10 +38,10 @@ public class JGroupsServerLocatorSchema extends AbstractServerLocatorSchema {
 
    @Override
    protected ServerLocator internalNewObject(URI uri, Map<String, String> query, String name) throws Exception {
-      ConnectionOptions options = newConnectionOptions(uri, query);
-
       DiscoveryGroupConfiguration dcConfig = getDiscoveryGroupConfiguration(uri, query, name);
 
+      BeanSupport.stripPasswords(query);
+      ConnectionOptions options = newConnectionOptions(uri, query);
       if (options.isHa()) {
          return ActiveMQClient.createServerLocatorWithHA(dcConfig);
       } else {
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/TCPServerLocatorSchema.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/TCPServerLocatorSchema.java
index 70bfcdd..b7b6c41 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/TCPServerLocatorSchema.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/TCPServerLocatorSchema.java
@@ -39,11 +39,12 @@ public class TCPServerLocatorSchema extends AbstractServerLocatorSchema {
 
    @Override
    protected ServerLocator internalNewObject(URI uri, Map<String, String> query, String name) throws Exception {
-      ConnectionOptions options = newConnectionOptions(uri, query);
-
       List<TransportConfiguration> configurations = TCPTransportConfigurationSchema.getTransportConfigurations(uri, query, TransportConstants.ALLOWABLE_CONNECTOR_KEYS, name, NettyConnectorFactory.class.getName());
       TransportConfiguration[] tcs = new TransportConfiguration[configurations.size()];
       configurations.toArray(tcs);
+
+      BeanSupport.stripPasswords(query);
+      ConnectionOptions options = newConnectionOptions(uri, query);
       if (options.isHa()) {
          return BeanSupport.setData(uri, ActiveMQClient.createServerLocatorWithHA(tcs), query);
       } else {
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/UDPServerLocatorSchema.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/UDPServerLocatorSchema.java
index c3bc6ba..d7cb0c6 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/UDPServerLocatorSchema.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/UDPServerLocatorSchema.java
@@ -44,10 +44,11 @@ public class UDPServerLocatorSchema extends AbstractServerLocatorSchema {
 
    @Override
    protected ServerLocator internalNewObject(URI uri, Map<String, String> query, String name) throws Exception {
-      ConnectionOptions options = newConnectionOptions(uri, query);
 
       DiscoveryGroupConfiguration dgc = getDiscoveryGroupConfiguration(uri, query, getHost(uri), getPort(uri), name);
 
+      BeanSupport.stripPasswords(query);
+      ConnectionOptions options = newConnectionOptions(uri, query);
       if (options.isHa()) {
          return ActiveMQClient.createServerLocatorWithHA(dgc);
       } else {
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ProtonProtocolManagerFactory.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ProtonProtocolManagerFactory.java
index 3fff612..ba15817 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ProtonProtocolManagerFactory.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ProtonProtocolManagerFactory.java
@@ -53,7 +53,7 @@ public class ProtonProtocolManagerFactory extends AbstractProtocolManagerFactory
                                                 final Map<String, Object> parameters,
                                                 List<BaseInterceptor> incomingInterceptors,
                                                 List<BaseInterceptor> outgoingInterceptors) throws Exception {
-      stripPasswordParameters(parameters);
+      BeanSupport.stripPasswords(parameters);
       return BeanSupport.setData(new ProtonProtocolManager(this, server, incomingInterceptors, outgoingInterceptors), parameters);
    }
 
diff --git a/artemis-protocols/artemis-hornetq-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/hornetq/HornetQProtocolManagerFactory.java b/artemis-protocols/artemis-hornetq-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/hornetq/HornetQProtocolManagerFactory.java
index cb8cc16..9d0232d 100644
--- a/artemis-protocols/artemis-hornetq-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/hornetq/HornetQProtocolManagerFactory.java
+++ b/artemis-protocols/artemis-hornetq-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/hornetq/HornetQProtocolManagerFactory.java
@@ -50,7 +50,7 @@ public class HornetQProtocolManagerFactory extends CoreProtocolManagerFactory {
       hqIncoming.add(new HQFilterConversionInterceptor());
       hqOutgoing.add(new HQPropertiesConversionInterceptor(false));
 
-      stripPasswordParameters(parameters);
+      BeanSupport.stripPasswords(parameters);
       return BeanSupport.setData(new HornetQProtocolManager(this, server, hqIncoming, hqOutgoing), parameters);
    }
 
diff --git a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTProtocolManagerFactory.java b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTProtocolManagerFactory.java
index 499d3e4..d165304 100644
--- a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTProtocolManagerFactory.java
+++ b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTProtocolManagerFactory.java
@@ -46,7 +46,7 @@ public class MQTTProtocolManagerFactory extends AbstractProtocolManagerFactory<M
                                                 final Map<String, Object> parameters,
                                                 List<BaseInterceptor> incomingInterceptors,
                                                 List<BaseInterceptor> outgoingInterceptors) throws Exception {
-      stripPasswordParameters(parameters);
+      BeanSupport.stripPasswords(parameters);
       return BeanSupport.setData(new MQTTProtocolManager(server, connectedClients, sessionStates, incomingInterceptors, outgoingInterceptors), parameters);
    }
 
diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManagerFactory.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManagerFactory.java
index ceb6a05..d40e2ef 100644
--- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManagerFactory.java
+++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManagerFactory.java
@@ -43,7 +43,7 @@ public class OpenWireProtocolManagerFactory extends AbstractProtocolManagerFacto
                                                 Map<String, Object> parameters,
                                                 final List<BaseInterceptor> incomingInterceptors,
                                                 List<BaseInterceptor> outgoingInterceptors) throws Exception {
-      stripPasswordParameters(parameters);
+      BeanSupport.stripPasswords(parameters);
       return BeanSupport.setData(new OpenWireProtocolManager(this, server), parameters);
    }
 
diff --git a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompProtocolManagerFactory.java b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompProtocolManagerFactory.java
index f6c61c6..cbef253 100644
--- a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompProtocolManagerFactory.java
+++ b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompProtocolManagerFactory.java
@@ -41,7 +41,7 @@ public class StompProtocolManagerFactory extends AbstractProtocolManagerFactory<
                                                 final Map<String, Object> parameters,
                                                 final List<BaseInterceptor> incomingInterceptors,
                                                 List<BaseInterceptor> outgoingInterceptors) throws Exception {
-      stripPasswordParameters(parameters);
+      BeanSupport.stripPasswords(parameters);
       return BeanSupport.setData(new StompProtocolManager(this, server, filterInterceptors(incomingInterceptors), filterInterceptors(outgoingInterceptors)), parameters);
    }
 
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManagerFactory.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManagerFactory.java
index 7590924..0fe6ec0 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManagerFactory.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManagerFactory.java
@@ -54,7 +54,7 @@ public class CoreProtocolManagerFactory extends AbstractProtocolManagerFactory<I
                                                 Map<String, Object> parameters,
                                                 final List<BaseInterceptor> incomingInterceptors,
                                                 List<BaseInterceptor> outgoingInterceptors) throws Exception {
-      stripPasswordParameters(parameters);
+      BeanSupport.stripPasswords(parameters);
       return BeanSupport.setData(new CoreProtocolManager(this, server, filterInterceptors(incomingInterceptors), filterInterceptors(outgoingInterceptors)), parameters);
    }
 
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/AbstractProtocolManagerFactory.java b/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/AbstractProtocolManagerFactory.java
index b50c7cc..3802b86 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/AbstractProtocolManagerFactory.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/AbstractProtocolManagerFactory.java
@@ -19,7 +19,6 @@ package org.apache.activemq.artemis.spi.core.protocol;
 
 import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.activemq.artemis.api.core.BaseInterceptor;
@@ -51,18 +50,6 @@ public abstract class AbstractProtocolManagerFactory<P extends BaseInterceptor>
       }
    }
 
-   /**
-    * org.apache.commons.beanutils.BeanUtils will log all the parameters so we strip out any password parameters
-    * (e.g. passwords for SSL keystore and truststore)
-    *
-    * @param parameters
-    */
-   protected void stripPasswordParameters(Map<String, Object> parameters) {
-      if (parameters != null) {
-         parameters.entrySet().removeIf(entries -> entries.getKey().toLowerCase().contains("password"));
-      }
-   }
-
    @Override
    public void loadProtocolServices(ActiveMQServer server, List<ActiveMQComponent> services) {
    }