Имя службы не определено ни в JAAS, ни в Kafka config (не Kerberos)

#apache-kafka #kafka-producer-api #apache-kafka-security

#apache-kafka #kafka-producer-api #apache-kafka-security

Вопрос:

Я пытаюсь настроить клиент kafka для аутентификации на защищенном сервере kafkaserver. Я настроил конфигурации jaas и ssl, но он жалуется на serviceNames.

Я не использую Kerberos.

команда

 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
  

ошибка

 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"
  

Комментарии:

1. Каково содержимое ssl.properties ?

2. ssl.properties -> ssl.conf (я случайно ошибся именем при очистке, чтобы скопировать его на этот сайт)

Ответ №1:

Эта ошибка указывает на то, что конфигурация jaas не видна вашему производителю kafka. Чтобы решить эту проблему, вам либо необходимо включить

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

в вашем ssl.properties файле или экспортируйте его по вашему пути

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

Комментарии:

1. проблема все еще существует, есть идеи

Ответ №2:

Также возникла эта ошибка, когда я запускал Kafka локально с рабочей конфигурацией

 security.protocol=SASL_PLAINTEXT
  

Я снова заработал, как только удалил SASL часть

 security.protocol=PLAINTEXT