I'm trying to configure a kafka client to authenticate against a secure kafkaserver. I've set up the jaas and ssl configs, but it's complaining about serviceNames.

I am not using Kerberos.

command

KAFKA_OPTS="-Djava.security.auth.login.config=./jaas.conf" \ kafka-console-producer --broker-list k0:9092,k1:9092,k2:9092 \ --topic test-topic --producer.config ./ssl.properties 

error

org.apache.kafka.common.KafkaException: Failed to construct kafka producer at org.apache.kafka.clients.producer.KafkaProducer.<init> [ ... ] Caused by: java.lang.IllegalArgumentException: No serviceName defined in either JAAS or Kafka config 

jaas.conf

KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required serviceName="kafka" password="broker-secret" user_broker="broker-secret" sasl.enabled.mechanisms=PLAIN sasl.mechanism.inter.broker.protocol=PLAIN confluent.metrics.reporter.sasl.mechanism=PLAIN user_username1="password1"; }; 

ssl.properties

bootstrap.servers=k0:9092,k1:9092,k2:9092 security.protocol=SASL_PLAINTEXT ssl.truststore.location=/var/ssl/private/client.truststore.jks ssl.truststore.password=confluent ssl.keystore.location=/var/ssl/private/client.keystore.jks ssl.keystore.password=confluent ssl.key.password=confluent producer.bootstrap.servers=k0:9092,1:9092,k2:9092 producer.security.protocol=SASL_PLAINTEXT producer.ssl.truststore.location=/var/private/ssl/kafka.client.truststore.jks producer.ssl.truststore.location=/var/ssl/private/client.truststore.jks producer.ssl.truststore.password=confluent producer.ssl.keystore.location=/var/ssl/private/client.keystore.jks producer.ssl.keystore.password=confluent producer.ssl.key.password=confluent org.apache.kafka.common.security.plain.PlainLoginModule required password="broker-secret" user_broker="broker-secret" sasl.enabled.mechanisms=PLAIN sasl.mechanism.inter.broker.protocol=PLAIN confluent.metrics.reporter.sasl.mechanism=PLAIN user_username1="password"; serviceName="Kafka" 
2

1 Answer

This error indicates that jaas configuration is not visible to your kafka producer. To solve this issue, you either need to include

sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="(username)" password="(password)"; 

in your ssl.properties file, or export it in your path

export KAFKA_OPTS="-Djava.security.auth.login.config=path/to/jaas.conf" 
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.