设置客户端sasl身份验证以连接两个不同的kafka集群

35g0bw71  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(695)

我有一个连接到kafka集群的spring启动应用程序。应用程序(作为kafka客户端)使用sasl身份验证,在初始化kafka生产者和消费者之前,我通过system.setproperty()指定了jaas配置。它在单个kafka集群设置下运行良好。
Kafka\客户端\ jaas.conf

KafkaClient {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="myClusterUser"
  password="user-secret";
};

mykafkaproducer.java文件

…
private void init()
{
    System.setProperty("java.security.auth.login.config", "kafka_client_jaas.conf");
    …
}

现在我有了一个第三方(其他人的)kafka集群,它与我的kafka集群完全断开连接。第三方kafka集群也使用sasl认证。
java应用程序如何连接到两个不同的kafka集群以及两个集群都需要sasl身份验证?两个集群的用户名和密码都不同,我只能在集群中设置一个jaas配置文件 java.security.auth.login.config .

b5lpy0ml

b5lpy0ml1#

由于Kafka0.10.2,您可以使用 sasl.jaas.config 设置为每个kafka客户端配置sasl身份验证。这使得能够在单个jvm中运行具有不同(或相同)sasl配置的多个kafka客户机。
为此:
未设置 java.security.auth.login.config 在每个kafka客户端属性中添加 sasl.jaas.config . 例如:

sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
  username="myClusterUser" \
  password="user-secret";

看到了吗http://kafka.apache.org/documentation.html#security_sasl_plain_clientconfig 关于全部细节
mykafkaclient.java文件

import org.apache.kafka.common.config.SaslConfigs;
private void init() {
  properties.put(SaslConfigs.SASL_JAAS_CONFIG,
  "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"myClusterUser\" password=\"user-secret\"");
}

删除jaas文件

相关问题