Kafka"未在JAAS配置中指定登录模块"

Tom*_*asz 12 java sasl jaas apache-kafka

我使用控制台脚本与使用sasl保护的Kafka进行通信时遇到问题.Kafka用sasl保护,监听器是SASL_PLAINTEXT,机制是PLAIN.

我做了什么:我尝试使用一个kafka脚本列出一些数据:

bin/kafka-consumer-groups.sh --bootstrap-server(address)--list

但是我得到" WARN Bootstrap broker(地址)已断开连接(org.apache.kafka.clients.NetworkClient) "并且命令失败,这是可以理解的,因为它是用sasl保护的.

所以我尝试了如何在该命令中添加客户端用户名/密码.首先,我尝试运行kafka-console-consumer脚本,我使用--command-config添加必要的文件.我很快发现我不能直接添加jaas文件,我需要使用.properties文件,所以我做到了.

我的属性文件(请记住括号表示"删失"数据,我不能在这里放置所有真实数据):

bin/kafka-consumer-groups.sh --bootstrap-server (address) --list
Run Code Online (Sandbox Code Playgroud)

我的jaas文件:

WARN Bootstrap broker (address) disconnected (org.apache.kafka.clients.NetworkClient)
Run Code Online (Sandbox Code Playgroud)

这个jaas文件适用于我的标准java应用程序.

但是,当我尝试运行kafka-consumer-groups脚本或kafka-console-consumer时,我收到此错误:

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)
Run Code Online (Sandbox Code Playgroud)

这个jaas文件是我在java应用程序中使用的文件的直接副本,它与kafka通信并且它可以工作,但是在这里,使用控制台工具,它只是不起作用.我试着寻找解决方案,但我找不到任何有用的东西.

谁能帮我这个?

Mic*_*son 20

有两种方法可以为Kafka客户端提供JAAS配置.

  • 通过客户财产:sasl.jaas.config.在这种情况下,您将其设置为实际的JAAS配置条目.例如,您的配置文件变为:

    bootstrap.servers=(address)
    zookeeper.connect=127.0.0.1:2181
    zookeeper.connection.timeout.ms=6000
    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="(username)" password="(password)";
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=PLAIN
    group.id=(group)
    
    Run Code Online (Sandbox Code Playgroud)

    正如您已经想到的那样,您可以使用--command-config将属性文件传递给kafka-consumer-groups.sh.

  • 通过Java属性:java.security.auth.login.config.在这种情况下,您将其设置为JAAS文件的路径.此外,如果您将其设置KAFKA_OPTS,kafka-consumer-groups.sh将自动提取.

    export KAFKA_OPTS="-Djava.security.auth.login.config=(path)/consumer_jaas.conf"
    
    Run Code Online (Sandbox Code Playgroud)

  • 使用 sasl.jaas.config 时,您只能将其设置为 JAAS 配置条目,它不适用于文件路径。与 Java 属性相反,它仅适用于文件路径。 (5认同)
  • 我已正确设置 sasl.jaas.config,但仍然收到“[main] ERROR io.confluence.admin.utils.cli.KafkaReadyCommand - Error while running kafka-ready.” 和“Caused by: java.lang.IllegalArgumentException:”在 JAAS 配置中找不到“KafkaClient”条目。系统属性“java.security.auth.login.config”未设置。如何让它停止寻找 .jaases 文件而只使用我指定的文件? (3认同)