Alex Popa created KAFKA-14870:
---------------------------------

             Summary: KerberosLogin reLogin does not persist the login 
CallbackHandler
                 Key: KAFKA-14870
                 URL: https://issues.apache.org/jira/browse/KAFKA-14870
             Project: Kafka
          Issue Type: Bug
          Components: security
            Reporter: Alex Popa


Hi,

There seems to be an inconsistency in the way the KerberosLogin handles 
relogins.

Kafka supports injecting a custom CallbackHandler, that subclasses the 
AuthenticateCallbackHandler. 
[https://kafka.apache.org/20/javadoc/org/apache/kafka/common/security/auth/AuthenticateCallbackHandler.html]

On KerberosLogin#login(), the super.login() method is invoked - 
[https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosLogin.java#L103]
 - which in turn passes the custom callbackhandler to the LoginContext - 
[https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/common/security/authenticator/AbstractLogin.java#L59]

Now, on reLogin - 
[https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosLogin.java#L372]
 - the new LoginContext is instantiated with null as the CallbackHandler.

Steps to reproduce:
 # Authenticate to Kafka using a custom CallbackHandler
 # Have the app running for as long as the token TTL (24h?)
 # Observe it fail on relogin

This looks like it should be patched ASAP on the main branch, but would also 
appreciate a 2.4.X patch.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to