You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by fp...@apache.org on 2016/06/23 17:41:36 UTC
svn commit: r1749950 - in /zookeeper/branches/branch-3.5: ./
src/java/main/org/apache/zookeeper/server/auth/
src/java/main/org/apache/zookeeper/server/quorum/
src/java/test/org/apache/zookeeper/server/quorum/
src/java/test/org/apache/zookeeper/test/
Author: fpj
Date: Thu Jun 23 17:41:36 2016
New Revision: 1749950
URL: http://svn.apache.org/viewvc?rev=1749950&view=rev
Log:
ZOOKEEPER-2297: NPE is thrown while creating "key manager" and "trust manager" (Arshad Mohammad via fpj)
Modified:
zookeeper/branches/branch-3.5/CHANGES.txt
zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/auth/ProviderRegistry.java
zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java
zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerConfigTest.java
zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/test/SSLAuthTest.java
Modified: zookeeper/branches/branch-3.5/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.5/CHANGES.txt?rev=1749950&r1=1749949&r2=1749950&view=diff
==============================================================================
--- zookeeper/branches/branch-3.5/CHANGES.txt (original)
+++ zookeeper/branches/branch-3.5/CHANGES.txt Thu Jun 23 17:41:36 2016
@@ -159,6 +159,9 @@ BUGFIXES:
ZOOKEEPER-2137: Make testPortChange() less flaky
(Michael Han via phunt)
+ ZOOKEEPER-2297: NPE is thrown while creating "key manager" and "trust manager"
+ (Arshad Mohammad via fpj)
+
IMPROVEMENTS:
ZOOKEEPER-2270: Allow MBeanRegistry to be overridden for better unit tests
Modified: zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/auth/ProviderRegistry.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/auth/ProviderRegistry.java?rev=1749950&r1=1749949&r2=1749950&view=diff
==============================================================================
--- zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/auth/ProviderRegistry.java (original)
+++ zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/auth/ProviderRegistry.java Thu Jun 23 17:41:36 2016
@@ -39,10 +39,8 @@ public class ProviderRegistry {
return;
IPAuthenticationProvider ipp = new IPAuthenticationProvider();
DigestAuthenticationProvider digp = new DigestAuthenticationProvider();
- X509AuthenticationProvider x509p = new X509AuthenticationProvider();
authenticationProviders.put(ipp.getScheme(), ipp);
authenticationProviders.put(digp.getScheme(), digp);
- authenticationProviders.put(x509p.getScheme(), x509p);
Enumeration<Object> en = System.getProperties().keys();
while (en.hasMoreElements()) {
String k = (String) en.nextElement();
Modified: zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java?rev=1749950&r1=1749949&r2=1749950&view=diff
==============================================================================
--- zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java (original)
+++ zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java Thu Jun 23 17:41:36 2016
@@ -37,6 +37,7 @@ import java.util.Properties;
import java.util.Map.Entry;
import org.apache.zookeeper.common.StringUtils;
+import org.apache.zookeeper.common.ZKConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
@@ -330,6 +331,9 @@ public class QuorumPeerConfig {
this.secureClientPortAddress = new InetSocketAddress(secureClientPort);
LOG.info("secureClientPortAddress is {}", this.secureClientPortAddress.toString());
}
+ if (this.secureClientPortAddress != null) {
+ configureSSLAuth();
+ }
if (tickTime == 0) {
throw new IllegalArgumentException("tickTime is not set");
@@ -353,6 +357,26 @@ public class QuorumPeerConfig {
}
}
}
+
+ /**
+ * Configure SSL authentication only if it is not configured.
+ *
+ * @throws ConfigException
+ * If authentication scheme is configured but authentication
+ * provider is not configured.
+ */
+ private void configureSSLAuth() throws ConfigException {
+ String sslAuthProp = "zookeeper.authProvider." + System.getProperty(ZKConfig.SSL_AUTHPROVIDER, "x509");
+ if (System.getProperty(sslAuthProp) == null) {
+ if ("zookeeper.authProvider.x509".equals(sslAuthProp)) {
+ System.setProperty("zookeeper.authProvider.x509",
+ "org.apache.zookeeper.server.auth.X509AuthenticationProvider");
+ } else {
+ throw new ConfigException("No auth provider configured for the SSL authentication scheme '"
+ + System.getProperty(ZKConfig.SSL_AUTHPROVIDER) + "'.");
+ }
+ }
+ }
/**
* Backward compatibility -- It would backup static config file on bootup
Modified: zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerConfigTest.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerConfigTest.java?rev=1749950&r1=1749949&r2=1749950&view=diff
==============================================================================
--- zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerConfigTest.java (original)
+++ zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerConfigTest.java Thu Jun 23 17:41:36 2016
@@ -19,12 +19,14 @@
package org.apache.zookeeper.server.quorum;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
+import org.apache.zookeeper.common.ZKConfig;
import org.apache.zookeeper.server.quorum.QuorumPeerConfig.ConfigException;
import org.junit.Test;
@@ -67,6 +69,40 @@ public class QuorumPeerConfigTest {
}
}
+ /**
+ * https://issues.apache.org/jira/browse/ZOOKEEPER-2297
+ */
+ @Test
+ public void testConfigureSSLAuthGetsConfiguredIfSecurePortConfigured()
+ throws IOException, ConfigException {
+ String sslAuthProp = "zookeeper.authProvider.x509";
+ QuorumPeerConfig quorumPeerConfig = new QuorumPeerConfig();
+ Properties zkProp = getDefaultZKProperties();
+ zkProp.setProperty("secureClientPort", "12345");
+ quorumPeerConfig.parseProperties(zkProp);
+ String expected = "org.apache.zookeeper.server.auth.X509AuthenticationProvider";
+ String result = System.getProperty(sslAuthProp);
+ assertEquals(expected, result);
+ }
+
+ /**
+ * https://issues.apache.org/jira/browse/ZOOKEEPER-2297
+ */
+ @Test
+ public void testCustomSSLAuth()
+ throws IOException{
+ System.setProperty(ZKConfig.SSL_AUTHPROVIDER, "y509");
+ QuorumPeerConfig quorumPeerConfig = new QuorumPeerConfig();
+ try {
+ Properties zkProp = getDefaultZKProperties();
+ zkProp.setProperty("secureClientPort", "12345");
+ quorumPeerConfig.parseProperties(zkProp);
+ fail("ConfigException is expected");
+ } catch (ConfigException e) {
+ assertNotNull(e.getMessage());
+ }
+ }
+
private Properties getDefaultZKProperties() {
Properties zkProp = new Properties();
zkProp.setProperty("dataDir", new File("myDataDir").getAbsolutePath());
Modified: zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/test/SSLAuthTest.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/test/SSLAuthTest.java?rev=1749950&r1=1749949&r2=1749950&view=diff
==============================================================================
--- zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/test/SSLAuthTest.java (original)
+++ zookeeper/branches/branch-3.5/src/java/test/org/apache/zookeeper/test/SSLAuthTest.java Thu Jun 23 17:41:36 2016
@@ -43,6 +43,7 @@ public class SSLAuthTest extends ClientB
System.setProperty(ZKConfig.SSL_TRUSTSTORE_LOCATION, testDataPath + "/ssl/testTrustStore.jks");
System.setProperty(ZKConfig.SSL_TRUSTSTORE_PASSWD, "testpass");
System.setProperty("javax.net.debug", "ssl");
+ System.setProperty("zookeeper.authProvider.x509", "org.apache.zookeeper.server.auth.X509AuthenticationProvider");
String host = "localhost";
int port = PortAssignment.unique();
@@ -65,6 +66,7 @@ public class SSLAuthTest extends ClientB
System.clearProperty(ZKConfig.SSL_TRUSTSTORE_LOCATION);
System.clearProperty(ZKConfig.SSL_TRUSTSTORE_PASSWD);
System.clearProperty("javax.net.debug");
+ System.clearProperty("zookeeper.authProvider.x509");
}
@Test