繁体   English   中英

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

[英]Setup client side SASL authentication to connect with two different kafka clusters

我有连接到我的 kafka 集群的 spring 引导应用程序。 应用程序(作为 kafka 客户端)使用 SASL 身份验证,我在初始化 kafka 生产者和消费者之前通过 System.setProperty() 指定了 JAAS 配置。 它适用于单个 kafka 集群设置。

kafka_client_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 身份验证? 两个集群的用户名和密码不同,我只能在java.security.auth.login.config中设置一个 JAAS 配置文件。

从 Kafka 0.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 文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM