I see a couple of things that look wrong. First, remove this line from your ZK config: zookeeper.authProvider.1=org.apache.zookeeper.server.auth.DigestAuthenticationProvider. And replace it with this: authProvider.sasl=org.apache.zookeeper.server.auth.SASLAuthenticationProvider.
Additionally, I think you need to add these lines to the ZK config if you want ZK to ZK authentication: quorum.auth.enableSasl=true quorum.auth.learnerRequireSasl=true quorum.auth.serverRequireSasl=true The rest looks OK. On Sat, Nov 11, 2023 at 9:12 PM arjun s v <arjun.cs...@gmail.com> wrote: > A small correction, I'm not trying to enable mTLS, just a simple > authentication(Digest or Plain) is enough, > Sharing the jaas files and config files, > kafka_server_jaas.conf > > > admin.KafkaServer{ > > > > org.apache.kafka.common.security.plain.PlainLoginModule required > > > > username="USERNAME" > > > > password="PASSWORD"; > > > > }; > > > > KafkaServer{ > > > > org.apache.kafka.common.security.plain.PlainLoginModule required > > > > username="USERNAME" > > > > password="PASSWORD"; > > > > }; > > > > Client{ > > > > org.apache.zookeeper.server.auth.DigestLoginModule required > > > > username="super" > > > > password="adminsecret"; > > > > }; > > > server properties > > > zookeeper.sasl.client=false > > java.security.auth.login.config=$base_dir/../config/kafka_server_jaas.conf > > zookeeper.connection.timeout.ms=6000 > > zookeeper.sync.time.ms=2000 > > zookeeper.set.acl=true > > > zk_server_jaas.conf > > > QuorumServer{ > > org.apache.zookeeper.server.auth.DigestLoginModule required > > user_test="test"; > > }; > > QuorumLearner{ > > org.apache.zookeeper.server.auth.DigestLoginModule required > > username="test" > > password="test"; > > }; > > Server{ > > org.apache.zookeeper.server.auth.DigestLoginModule required > > username="super" > > password="adminsecret"; > > }; > > > zoo.cfg > > > > > > zookeeper.authProvider.1=org.apache.zookeeper.server.auth.DigestAuthenticationProvider > > > env > > > SERVER_JVMFLAGS="$SERVER_JVMFLAGS > > -Djava.security.auth.login.config=$ZOOCFGDIR/zk_server_jaas.conf" > > > On Fri, Nov 10, 2023 at 7:03 PM Alex Brekken <brek...@gmail.com> wrote: > > > Ok, so you're trying to enable both SASL authentication (digest) and TLS, > > using mTLS for Zookeeper? I'm just trying to understand the bigger > > picture. The error you're getting regarding the Sasl token sounds like > > either the jaas config on the Kafka broker side is wrong/missing, or the > > jaas config on the ZK side is wrong/missing. (you need both - in this > case > > the broker is the "client" and ZK is the "server"). Are you able to share > > the jaas config you're using for both Kafka and ZK? Without seeing that > > it's tough to know. Also, to make troubleshooting easier you might want > to > > leave TLS out of it for now and get SASL working first. (or vice-versa) > > > > > > > > On Thu, Nov 9, 2023 at 11:26 PM arjun s v <arjun.cs...@gmail.com> wrote: > > > > > "Digest-MD5 is SASL authentication, so not sure what you mean here." > > > If I set zookeeper.sasl.client=true, zookeeper expects a "saslToken" > and > > > throws the following error, > > > > > > "SASL authentication failed using login context 'Client' with > exception: > > > {}" "javax.security.sasl.SaslException: Error in authenticating with a > > > Zookeeper Quorum member: the quorum member's saslToken is null. > > > > > > at > > > > > > > > > org.apache.zookeeper.client.ZooKeeperSaslClient.createSaslToken(ZooKeeperSaslClient.java:312) > > > > > > at > > > > > > > > > org.apache.zookeeper.client.ZooKeeperSaslClient.respondToServer(ZooKeeperSaslClient.java:275) > > > > > > at > > > > > > > > > org.apache.zookeeper.ClientCnxn$SendThread.readResponse(ClientCnxn.java:882) > > > > > > at > > > > > > org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:103) > > > > > > at > > > > > > > > > org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:365) > > > > > > at > > > org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1223) > > > > > > > > > "Hmm, that config shouldn't have anything to do with TLS. You can set > > ACL's > > > > > > with or without TLS encryption. Were you getting an error?" > > > > > > > > > "Fatal error during KafkaServer startup. Prepare to shutdown" > > > "java.lang.SecurityException: zookeeper.set.acl is true, but ZooKeeper > > > client TLS configuration identifying at least > > > kafka.server.KafkaConfig$@7b22ec89.ZkSslClientEnableProp, > > > kafka.server.KafkaConfig$@7b22ec89.ZkClientCnxnSocketProp, and > > > kafka.server.KafkaConfig$@7b22ec89.ZkSslKeyStoreLocationProp was not > > > present and the verification of the JAAS login file failed > > > [java.security.auth.login.config=./../config/kafka_server_jaas.conf, > > > zookeeper.sasl.client=false, > zookeeper.sasl.clientconfig=default:Client] > > > > > > at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:445) > > > > > > at kafka.server.KafkaServer.startup(KafkaServer.scala:191) > > > > > > at kafka.Kafka$.main(Kafka.scala:109) > > > > > > at kafka.Kafka.main(Kafka.scala) > > > > > > > > > "This was the 2nd result in a google search: > > > https://docs.confluent.io/platform/current/security/zk-security.html" > > > > > > FYKI, I've googled, asked chat gpt, surfed over many zookeeper and > kafka > > > docs and blog, > > > I remember trying the doc you suggested here about 10 days back in the > > > initial days of this task! > > > About the doc you suggested, > > > I cannot configure SSL as I already mentioned, If I skip ssl config > part > > > from your suggested doc and tried Digest-MD5, I come up "saslToken > > missing" > > > exception which I mentioned above! > > > I don't really understand what saslToken is and how to make it get > > > generated for Digest auth! > > > Please assist! > > > > > > On Thu, Nov 9, 2023 at 7:15 PM Alex Craig <alexcrai...@gmail.com> > wrote: > > > > > > > " I couldn't find any doc by kafka to enable Digest-MD5 > > authentication." > > > > This was the 2nd result in a google search: > > > > https://docs.confluent.io/platform/current/security/zk-security.html > > > > > > > > " I don't want to enable SASL." > > > > Digest-MD5 is SASL authentication, so not sure what you mean here. > > > > > > > > " If I set zookeeper.set.acl=true, I'm forced to configure TLS." > > > > Hmm, that config shouldn't have anything to do with TLS. You can set > > > ACL's > > > > with or without TLS encryption. Were you getting an error? > > > > > > > > On Wed, Nov 8, 2023 at 11:35 PM arjun s v <arjun.cs...@gmail.com> > > wrote: > > > > > > > > > Team, > > > > > > > > > > Please consider this as high priority, we need to enable > > authentication > > > > > ASAP. Please assist. > > > > > On Tue, Nov 7, 2023 at 4:38 PM arjun s v <arjun.cs...@gmail.com> > > > wrote: > > > > > > > > > > > Hi team, > > > > > > > > > > > > I'm trying to configure *Digest-MD5* authentication between kafka > > and > > > > > > zookeeper. > > > > > > Also I need to set ACL with digest scheme and credentials. > > > > > > I don't want to enable SASL. > > > > > > I tried to follow this > > > > > > < > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/ZOOKEEPER/Client-Server+mutual+authentication > > > > > > > > > > doc > > > > > > from zookeeper, > > > > > > > > > > > > - If I configured a jaas file, I have to set > > > > > zookeeper.sasl.client=true(if > > > > > > not kafka throws error from JaasUtils) which enables sasl > > > > > authentication. > > > > > > - If I set zookeeper.set.acl=true, I'm forced to configure > TLS. > > > > > > > > > > > > I couldn't find any doc by kafka to enable Digest-MD5 > > authentication. > > > > > > I cannot configure kerberos or TLS, just a Digest-MD5 is > sufficient > > > for > > > > > my > > > > > > usecase. > > > > > > Please let me know if there are any docs to enable Digest-MD5 > auth > > > > > between > > > > > > kafka and zookeeper. > > > > > > > > > > > > Regards, > > > > > > Arjun S V > > > > > > > > > > > > > > > > > > > > >