diff --git a/CHANGES.txt b/CHANGES.txt index 5b23245565..765097bb92 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -10,7 +10,8 @@ * Handle difference in timestamp precision between java8 and java11 in LogFIle.java (CASSANDRA-16050) Merged from 2.2: * 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) 3.0.21 * Backport CASSANDRA-12189: escape string literals (CASSANDRA-15948) diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java index 14d8aab0c8..666ca721a8 100644 --- a/src/java/org/apache/cassandra/service/CassandraDaemon.java +++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java @@ -33,6 +33,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.concurrent.TimeUnit; @@ -132,7 +133,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");