diff --git a/CHANGES.txt b/CHANGES.txt index 439ef5dc60..d6edbe90db 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,7 @@ 2.2.18 * Fix CQL parsing of collections when the column type is reversed (CASSANDRA-15814) - +Merged from 2.1: + * Only allow strings to be passed to JMX authentication (CASSANDRA-16077) 2.2.17 * Fix nomenclature of allow and deny lists (CASSANDRA-15862) diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java index 7d85d9db19..86e2464d0f 100644 --- a/src/java/org/apache/cassandra/service/CassandraDaemon.java +++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java @@ -34,6 +34,7 @@ import java.rmi.registry.Registry; import java.rmi.server.RMIClientSocketFactory; import java.rmi.server.RMIServerSocketFactory; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -128,7 +129,10 @@ public class CassandraDaemon System.setProperty("java.rmi.server.hostname", InetAddress.getLoopbackAddress().getHostAddress()); RMIServerSocketFactory serverFactory = new RMIServerSocketFactoryImpl(); - Map env = Collections.singletonMap(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, serverFactory); + Map env = new HashMap<>(); + env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, serverFactory); + env.put("jmx.remote.rmi.server.credential.types", + new String[] { String[].class.getName(), String.class.getName() }); try { Registry registry = new JmxRegistry(Integer.valueOf(jmxPort), null, serverFactory, "jmxrmi");