【问题标题】:How to pass user name and password to KafkaConsumer?如何将用户名和密码传递给 KafkaConsumer?
【发布时间】:2020-02-15 13:38:42
【问题描述】:

我找不到如何将用户名和密码传递给 KafkaConsumer。我使用 SASL PLAINTEXT 在 Kafka 服务器上对客户端进行身份验证。

我试图在https://kafka.apache.org/documentation/#consumerconfigs 上找到此信息 但结果是否定的。

我发现了一些作者使用参数“用户名”和“密码”的例子。我试着这样做:

props.put("bootstrap.servers", uri.getHost() + ":" + uri.getPort());
if (!groupidName.isBlank())
    props.put("group.id", groupidName);
props.put("enable.auto.commit", "false");
props.put("auto.offset.reset", groupidName.isBlank() ? "latest" : "earliest");
props.put("session.timeout.ms", "30000");
props.put("max.poll.records", "1");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
if (kafkaConnector.getConfig().getUserName() != null && kafkaConnector.getConfig().getPassword() != null)
{
    props.put("security.protocol","SASL_PLAINTEXT");
    props.put("sasl.mechanism","PLAIN");
    props.put("username",kafkaConnector.getConfig().getUserName());
    props.put("password",kafkaConnector.getConfig().getPassword());
}

但我得到了异常“无法构造 kafka 消费者”。

如果有人知道如何将用户名和密码传递给消费者配置,请帮忙。

【问题讨论】:

标签: java authentication apache-kafka


【解决方案1】:

你必须设置属性sasl.jaas.config的值。

这是我们的工作:

props.put("security.protocol", "SASL_PLAINTEXT");
props.put("sasl.mechanism", "PLAIN");
props.put("sasl.jaas.config", PlainLoginModule.class.getName() + " required username=\"" + KAFKA_USER + "\" password=\"" + KAFKA_PASSWORD + "\";")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2016-07-01
    相关资源
    最近更新 更多