首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SASL握手期间元数据类型的意外Kafka请求

SASL握手期间元数据类型的意外Kafka请求
EN

Stack Overflow用户
提问于 2020-04-30 17:33:51
回答 1查看 7.2K关注 0票数 4

我正在尝试使用SASL Plain将Kafka Java客户端连接到Kafka broker。但是当我尝试从生产者发送消息时,Kafka服务器记录了以下错误:

代码语言:javascript
运行
复制
[2020-04-30 14:48:14,955] INFO [SocketServer brokerId=0] Failed authentication with /127.0.0.1 (Unexpected Kafka request of type METADATA during SASL handshake.) (org.apache.kafka.common.network.Selector)

根据外观,生产者尝试在SASL握手之前发送元数据请求。如何在发送消息前进行握手?

以下是我的kafka_server_jaas.conf文件,用于Kafka Server。

代码语言:javascript
运行
复制
KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin-secret"
    user_admin="admin-secret";
};

Client {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin-secret";
};

以下是我的zookeeper_jaas.conf文件,用于zookeeper:

代码语言:javascript
运行
复制
Server {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin-secret"
    user_admin="admin-secret";
};

在我的Java生产者中,我设置了以下属性:

代码语言:javascript
运行
复制
Properties properties = new Properties();
properties.put("bootstrap.servers", "localhost:9092");
properties.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"admin_secret\"");
properties.put("sasl.mechanisms", "PLAIN");
properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer kafkaProducer = new KafkaProducer(properties);

我做错什么了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-30 17:54:12

需要指定security.protocol,否则默认情况下Kafka客户端不使用SASL

在客户端属性中,添加:

代码语言:javascript
运行
复制
properties.put("security.protocol", "SASL_SSL");

也有SASL_PLAINTEXT,但不推荐使用SASL_PLAINTEXT上的PLAIN机制,因为密码将以明文交换。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61520274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档