Ich habe ein Problem mit der Kommunikation mit Kafka mit sasl mit Konsolen-Skripten gesichert. Kafka ist mit sasl gesichert, Listener ist SASL_PLAINTEXT und Mechanismus ist PLAIN.Kafka "Login-Modul nicht in JAAS-Konfiguration angegeben"
Was ich tat: Ich habe versucht, einige Daten Auflistung eines von kafka Skripten:
bin/kafka-consumer-groups.sh --bootstrap-Server (Adresse) --list
Allerdings bekomme ich "WARN Bootstrap Broker (Adresse) getrennt (org.apache.kafka.clients.NetworkClient)" und Befehl fehlschlägt, was verständlich ist, weil es mit sasl gesichert ist.
Also habe ich versucht, Client Benutzername/Passwort zu diesem Befehl hinzuzufügen. Zuerst habe ich versucht, kafka-console-consumer Skript ausführen, habe ich --command-config, um die erforderliche Datei hinzuzufügen. Ich fand schnell heraus, dass ich die JAAS-Datei nicht direkt hinzufügen konnte und dass ich die .properties-Datei verwenden musste, also tat ich es.
Meine Properties-Datei (bedenken Sie, dass Klammern "zensiert" Daten zeigen, kann ich nicht alle realen Daten auszureizen):
bootstrap.servers=(address)
zookeeper.connect=127.0.0.1:2181
zookeeper.connection.timeout.ms=6000
sasl.jaas.config=(path)/consumer_jaas.conf
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
group.id=(group)
Meine jaas Datei:
Diese jaasKafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username=(username)
password=(password);
};
Datei funktioniert in meinen Standard-Java-Anwendungen.
aber wenn ich versuche, entweder kafka-Consumer-Gruppen Skript oder kafka-console-Verbraucher zu laufen, bekomme ich diesen Fehler:
Exception in thread "main" org.apache.kafka.common.KafkaException: java.lang.IllegalArgumentException: Login module not specified in JAAS config
at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:94)
at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:93)
at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:51)
at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:84)
at kafka.admin.AdminClient$.create(AdminClient.scala:229)
at kafka.admin.AdminClient$.create(AdminClient.scala:223)
at kafka.admin.AdminClient$.create(AdminClient.scala:221)
at kafka.admin.ConsumerGroupCommand$KafkaConsumerGroupService.createAdminClient(ConsumerGroupCommand.scala:454)
at kafka.admin.ConsumerGroupCommand$KafkaConsumerGroupService.<init>(ConsumerGroupCommand.scala:389)
at kafka.admin.ConsumerGroupCommand$.main(ConsumerGroupCommand.scala:65)
at kafka.admin.ConsumerGroupCommand.main(ConsumerGroupCommand.scala)
Caused by: java.lang.IllegalArgumentException: Login module not specified in JAAS config
at org.apache.kafka.common.security.JaasConfig.<init>(JaasConfig.java:68)
at org.apache.kafka.common.security.JaasUtils.jaasConfig(JaasUtils.java:59)
at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:85)
Diese jaas-Datei ist eine direkte Kopie einer Datei, die Ich benutze in Java-App, die mit Kafka kommuniziert und es funktioniert, aber hier, mit Konsolen-Tools, es funktioniert einfach nicht. Ich habe versucht, nach einer Lösung zu suchen, aber ich kann nichts Nützliches finden.
Kann mir jemand dabei helfen?
Ich habe jaas Konfigurationseintrag direkt in .properties-Datei und es funktionierte. Jetzt kann ich diese Skripte ohne Fehler verwenden. Ich weiß nicht, warum es Probleme mit der externen Datei hatte. Vielen Dank! – Tomasz
Wenn Sie sasl.jaas.config verwenden, können Sie nur den JAAS-Konfigurationseintrag festlegen, der mit dem Pfad zu einer Datei nicht funktioniert. Im Gegensatz zur Java-Eigenschaft funktioniert es nur mit dem Pfad zu einer Datei. –