This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 84a6afb3892ac98f6a5fdfc1f07d39f6d3af4760 Author: jlf <longfei.ji...@kyligence.io> AuthorDate: Fri May 5 19:20:33 2023 +0800 KYLIN-5639 fix FI start error --- .../kylin/tool/kerberos/KerberosLoginUtil.java | 12 ++++----- .../kylin/tool/kerberos/KerberosLoginUtilTest.java | 30 +++++++++++++++++++--- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/tool/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java b/src/tool/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java index 1272ebc777..837dcd2484 100644 --- a/src/tool/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java +++ b/src/tool/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java @@ -30,6 +30,7 @@ import java.util.Map; import javax.security.auth.login.AppConfigurationEntry; +import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.authentication.util.KerberosUtil; @@ -203,12 +204,9 @@ public class KerberosLoginUtil { } public static void setJaasConf(String loginContextName, String principal, String keytabFile) throws IOException { - Preconditions.checkArgument((loginContextName == null) || (loginContextName.length() <= 0), - "input loginContextName is invalid."); - Preconditions.checkArgument((principal == null) || (principal.length() <= 0), - "input principal is invalid."); - Preconditions.checkArgument((keytabFile == null) || (keytabFile.length() <= 0), - "input keytabFile is invalid."); + Preconditions.checkArgument(StringUtils.isNotEmpty(loginContextName), "input loginContextName is invalid."); + Preconditions.checkArgument(StringUtils.isNotEmpty(principal), "input principal is invalid."); + Preconditions.checkArgument(StringUtils.isNotEmpty(keytabFile), "input keytabFile is invalid."); File userKeytabFile = new File(keytabFile); if (!userKeytabFile.exists()) { @@ -271,11 +269,11 @@ public class KerberosLoginUtil { public static void setZookeeperServerPrincipal(String zkServerPrincipal) throws IOException { setZookeeperServerPrincipal(ZOOKEEPER_SERVER_PRINCIPAL_KEY, zkServerPrincipal); } + public static void setKrb5Config(String krb5ConfFile) throws IOException { setZookeeperServerPrincipal(JAVA_SECURITY_KRB5_CONF_KEY, krb5ConfFile); } - public static void setZookeeperServerPrincipal(String zkServerPrincipalKey, String zkServerPrincipal) throws IOException { Unsafe.setProperty(zkServerPrincipalKey, zkServerPrincipal); diff --git a/src/tool/src/test/java/org/apache/kylin/tool/kerberos/KerberosLoginUtilTest.java b/src/tool/src/test/java/org/apache/kylin/tool/kerberos/KerberosLoginUtilTest.java index 2c6c949f14..19434025d9 100644 --- a/src/tool/src/test/java/org/apache/kylin/tool/kerberos/KerberosLoginUtilTest.java +++ b/src/tool/src/test/java/org/apache/kylin/tool/kerberos/KerberosLoginUtilTest.java @@ -17,12 +17,14 @@ */ package org.apache.kylin.tool.kerberos; +import static org.junit.Assert.fail; + import org.junit.Assert; import org.junit.Test; public class KerberosLoginUtilTest { - private String validKeyTab = "src/test/resources/kerberos/valid.keytab"; - private String invalidKeyTab = "src/test/resources/kerberos/invalid.keytab"; + private static final String validKeyTab = "src/test/resources/kerberos/valid.keytab"; + private static final String invalidKeyTab = "src/test/resources/kerberos/invalid.keytab"; @Test public void checkKeyTabIsValid() { @@ -31,7 +33,7 @@ public class KerberosLoginUtilTest { @Test public void checkKeyTabIsInvalid() { - Assert.assertTrue(!KerberosLoginUtil.checkKeyTabIsValid(invalidKeyTab)); + Assert.assertFalse(KerberosLoginUtil.checkKeyTabIsValid(invalidKeyTab)); } @Test @@ -41,6 +43,26 @@ public class KerberosLoginUtilTest { @Test public void checkKeyTabIsMissing() { - Assert.assertTrue(!KerberosLoginUtil.checkKeyTabIsExist(invalidKeyTab + "x")); + Assert.assertFalse(KerberosLoginUtil.checkKeyTabIsExist(invalidKeyTab + "x")); + } + + @Test + public void testSetJaasConfCheck() { + testSetJaasConfCheck(null, null, null, "input loginContextName is invalid."); + testSetJaasConfCheck("", null, null, "input loginContextName is invalid."); + testSetJaasConfCheck("Client", null, null, "input principal is invalid."); + testSetJaasConfCheck("Client", "", null, "input principal is invalid."); + testSetJaasConfCheck("Client", "test", null, "input keytabFile is invalid."); + testSetJaasConfCheck("Client", "test", "", "input keytabFile is invalid."); + } + + void testSetJaasConfCheck(String loginContextName, String principal, String keytabFile, String message) { + try { + KerberosLoginUtil.setJaasConf(loginContextName, principal, keytabFile); + fail(); + } catch (Exception e) { + Assert.assertTrue(e instanceof IllegalArgumentException); + Assert.assertEquals(String.valueOf(message), e.getMessage()); + } } }