当前位置: 首页 > 面试题库 >

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

党航
2023-03-14
问题内容

sasl使用控制台脚本保护的Kafka通信时出现问题。Kafka受保护sasl,监听器受保护SASL_PLAINTEXT,机制由PLAIN

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

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

但是我明白了

WARN Bootstrap broker (address) disconnected (org.apache.kafka.clients.NetworkClient)

命令失败,这是可以理解的,因为它由sasl保护。

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

我的属性文件(请记住,方括号表示“被检查”的数据,我不能在此处放置所有真实数据):

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)

我的jaas文件:

KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username=(username)
    password=(password);
};

jaas文件可在我的标准Java应用程序中使用。

但是,当我尝试运行kafka-consumer-groupsscript或时kafka-console-consumer,出现此错误:

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)

jaas文件是我在与kafka进行html" target="_blank">通信的java应用程序中使用的文件的直接副本,并且可以使用,但是在这里,使用控制台工具无法使用。我尝试寻找解决方案,但找不到任何有用的方法。

谁能帮我这个?


问题答案:

有两种方法可以向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)

如您所知,您可以--command-config用来将属性文件传递给kafka-consumer-groups.sh

  • 通过Java属性:java.security.auth.login.config。在这种情况下,将其设置为JAAS文件的路径。另外,如果您将其设置为KAFKA_OPTSkafka-consumer-groups.sh则会自动将其拾取。
    export KAFKA_OPTS="-Djava.security.auth.login.config=(path)/consumer_jaas.conf"
    


 类似资料:
  • 我正在尝试使用Java运行我的Kafka Streams应用程序,并以K,V对的形式将合流凭证作为环境变量传递。 但是我面临着一个错误的问题- 下面是我如何设置Kafka属性的- 下面是我如何传递环境变量的- 但是如果我直接在properties对象中硬编码Creds字符串,比如-

  • 尝试在连接到Kafka时使用kerberos身份验证时遇到问题。使用scala和my看起来像这样。

  • 我试图配置一个kafka客户端对一个安全的kafkaserver进行身份验证。我已经设置了jaas和ssl配置,但是它在抱怨serviceNames。 我没有使用Kerberos。 命令 错误 贾斯。形态 ssl.properties

  • 有人可以使用jaas登录模块吗。我在看医生 我想是这些登录模块可以1.与OS用户进行身份验证2.提供该用户的组。 基本上我想通过操作系统进行身份验证。输入用户名和密码 我想用windows进行身份验证 我不想做LDAP认证只做os认证。 对于windows,有华夫饼干库可用。但我无法在使用64位机器时进行身份验证。在32位上运行良好。 对于linux,有jpam,但它不提供组。它只会检查用户名、密

  • 我正在通过camel从mqtt消费并试图发布到融合kafka,但当我生产到kafka时,我收到以下错误 我用于构建路由uri的camel配置如下所示 我遵循了这个链接Camel Kafka安全协议SASL_SASL不起作用试图将JAAS配置放在RAW中,但它不起作用,即使我尝试将此处提到的JAAS属性外部化,Kafka“Login module not specified in JAAS conf

  • 我试图连接到Kafka使用汇流。Kafka包。但是,我需要使用jaas作为身份验证方法。我找不到使用融合的方法。Kafka为。NET. 编辑: 我收到以下数据连接: 我试图建立这样的联系: 你们知道我怎么设置收到的Jaas吗?