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

ijuma pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 11641c7  MINOR: Reflection free implementation of 
`defaultKerberosRealm` (#6978)
11641c7 is described below

commit 11641c7f53b2ee156490b2aadf79552d266ec956
Author: Ismael Juma <[email protected]>
AuthorDate: Fri Jun 21 18:00:46 2019 -0700

    MINOR: Reflection free implementation of `defaultKerberosRealm` (#6978)
    
    The existing implementation triggers warnings in Java 9+ and relies
    on internal classes that vary depending on the JDK provider. The proposed
    implementation fixes these issues and it's more concise.
    
    Reviewers: Rajini Sivaram <[email protected]>, Guozhang Wang 
<[email protected]>
---
 .../kafka/common/network/SaslChannelBuilder.java   | 28 ++++------------------
 1 file changed, 5 insertions(+), 23 deletions(-)

diff --git 
a/clients/src/main/java/org/apache/kafka/common/network/SaslChannelBuilder.java 
b/clients/src/main/java/org/apache/kafka/common/network/SaslChannelBuilder.java
index 6b7187b..a2c8431 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/network/SaslChannelBuilder.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/network/SaslChannelBuilder.java
@@ -46,14 +46,11 @@ import 
org.apache.kafka.common.security.scram.internals.ScramMechanism;
 import 
org.apache.kafka.common.security.scram.internals.ScramServerCallbackHandler;
 import org.apache.kafka.common.security.ssl.SslFactory;
 import 
org.apache.kafka.common.security.token.delegation.internals.DelegationTokenCache;
-import org.apache.kafka.common.utils.Java;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.io.IOException;
 import java.net.Socket;
 import java.nio.channels.SelectionKey;
@@ -66,6 +63,7 @@ import java.util.Set;
 import java.util.function.Supplier;
 
 import javax.security.auth.Subject;
+import javax.security.auth.kerberos.KerberosPrincipal;
 
 public class SaslChannelBuilder implements ChannelBuilder, 
ListenerReconfigurable {
     private static final Logger log = 
LoggerFactory.getLogger(SaslChannelBuilder.class);
@@ -260,25 +258,9 @@ public class SaslChannelBuilder implements ChannelBuilder, 
ListenerReconfigurabl
         return loginManagers;
     }
 
-    private static String defaultKerberosRealm() throws 
ClassNotFoundException, NoSuchMethodException,
-            IllegalArgumentException, IllegalAccessException, 
InvocationTargetException {
-
-        //TODO Find a way to avoid using these proprietary classes as access 
to Java 9 will block access by default
-        //due to the Jigsaw module system
-
-        Object kerbConf;
-        Class<?> classRef;
-        Method getInstanceMethod;
-        Method getDefaultRealmMethod;
-        if (Java.isIbmJdk()) {
-            classRef = Class.forName("com.ibm.security.krb5.internal.Config");
-        } else {
-            classRef = Class.forName("sun.security.krb5.Config");
-        }
-        getInstanceMethod = classRef.getMethod("getInstance", new Class[0]);
-        kerbConf = getInstanceMethod.invoke(classRef, new Object[0]);
-        getDefaultRealmMethod = classRef.getDeclaredMethod("getDefaultRealm", 
new Class[0]);
-        return (String) getDefaultRealmMethod.invoke(kerbConf, new Object[0]);
+    private static String defaultKerberosRealm() {
+        // see https://issues.apache.org/jira/browse/HADOOP-10848 for details
+        return new KerberosPrincipal("tmp", 1).getRealm();
     }
 
     private void createClientCallbackHandler(Map<String, ?> configs) {
@@ -290,7 +272,7 @@ public class SaslChannelBuilder implements ChannelBuilder, 
ListenerReconfigurabl
         saslCallbackHandlers.put(clientSaslMechanism, callbackHandler);
     }
 
-    private void createServerCallbackHandlers(Map<String, ?> configs) throws 
ClassNotFoundException {
+    private void createServerCallbackHandlers(Map<String, ?> configs) {
         for (String mechanism : jaasContexts.keySet()) {
             AuthenticateCallbackHandler callbackHandler;
             String prefix = ListenerName.saslMechanismPrefix(mechanism);

Reply via email to