...
Code Block | ||||
---|---|---|---|---|
| ||||
package org.apache.kafka.common.security.auth; import org.apache.kafka.common.Configurable; import org.apache.kafka.common.network.Mode; import java.util.Collection; import javax.security.auth.callback.CallbackHandler; public interface AuthCallbackHandler extends Configurable, CallbackHandler { CallbackHandler { /** * Configures with the given key-value pairs for the specified SASL mechanism */ void configure(Map<String, ?> configs, String saslMechanism); /** * Returns the connection mode supported by this callback handler */ Mode mode(); /** * Returns the SASL mechanisms supported by this callback handler */ Collection<String> saslMechanismssupportedSaslMechanisms(); /** * Closes this instance. */ void close(); } |
...
ChannelBuilder
will create an instance of each configured callback handler using the default constructor. For mechanisms without a callback handler override, the existing default callback handlers (SaslServerCallbackHandler/SaslClientCallbackHandler
) will be created. Callback handler instances will be created once for each enabled mechanism in ChannelBuilder
, instead of per-connection. This enables callback handlers using external authentication servers to cache credentials or reuse connections if required. SaslClientCallbackHandler
will be modified to obtain Subject
using Subject.getSubject(AccessController.getContext())
to avoid the current per-connection state.
...