[
https://issues.apache.org/jira/browse/KAFKA-4764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15997421#comment-15997421
]
Rajini Sivaram commented on KAFKA-4764:
---------------------------------------
[~junrao] Yes, Zookeeper does the same as Kafka does today. As an example, with
a wrong password for the ZK client, the logs in Kafka show:
{quote}
DEBUG saslClient.evaluateChallenge(len=101)
(org.apache.zookeeper.client.ZooKeeperSaslClient)
DEBUG ClientCnxn:sendSaslPacket:length=276
(org.apache.zookeeper.client.ZooKeeperSaslClient)
INFO Unable to read additional data from server sessionid 0x15bd52108ef0003,
likely server has closed socket, closing socket connection and attempting
reconnect (org.apache.zookeeper.ClientCnxn)
{quote}
The issue with treating any disconnects during authentication as authentication
failures is that we may incorrectly report authentication failure for a
correctly configured client because a broker was restarting. Also, if we want
to treat authentication exceptions as non-retriable exceptions, we need to be
sure that the connection failure was actually an authentication exception. I
suppose if we want the simplest solution, we could simply log that connection
failed during authentication with a hint that it may be an authentication
failure. And retry as we do today.
The proposal in
[https://cwiki.apache.org/confluence/display/KAFKA/KIP-152+-+Improve+diagnostics+for+SASL+authentication+failures]
is different from the description in this JIRA. In case you haven't seen the
KIP, can you take a look? It is a much bigger change, but helps to ensure that
we can identify and treat authentication failures differently from any other
form of network error.
Thank you....
> Improve diagnostics for SASL authentication failures
> ----------------------------------------------------
>
> Key: KAFKA-4764
> URL: https://issues.apache.org/jira/browse/KAFKA-4764
> Project: Kafka
> Issue Type: Improvement
> Components: security
> Affects Versions: 0.10.2.0
> Reporter: Rajini Sivaram
> Assignee: Rajini Sivaram
> Fix For: 0.11.0.0
>
>
> At the moment, broker closes the client connection if SASL authentication
> fails. Clients see this as a connection failure and do not get any feedback
> for the reason why the connection was closed. Producers and consumers retry,
> attempting to create successful connections, treating authentication failures
> as transient failures. There are no log entries on the client-side which
> indicate that any of these connection failures were due to authentication
> failure.
> This JIRA will aim to improve diagnosis of authentication failures with the
> following changes:
> - Broker will send an authentication error code if SASL authentication fails,
> just before closing the connection. This will be treated as an invalid token
> by the client authenticator, and the error handling for invalid tokens will
> be updated to report authentication failure for this case. This is a bit of a
> hack, but would work with GSSAPI, PLAIN and SCRAM. SASL itself doesn't
> provide a mechanism-independent way of reporting authentication failures. An
> alternative would be to wrap SASL authentication in Kafka request/response to
> enables error codes to be sent as Kafka response, but that would be a much
> bigger change.
> - Log a warning in clients for authentication failures, distinguishing these
> from EOF exceptions due to connection failure
> - Blackout nodes to which connection failed due to authentication error, no
> more attempts will be made to connect to these nodes.
> - We should use the connection state to improve handling of producer/consumer
> requests, avoiding unnecessary blocking. This will not be addressed in this
> JIRA, KAFKA-3899 should be able to use the additional state from JIRA to fix
> this issue.
> This JIRA also does not change handling of SSL authentication failures.
> javax.net.debug provides sufficient diagnostics for this case, I don't
> believe there is sufficient information in `SslTransportLayer` to treat these
> in a consistent way with SASL authentication failures.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)