【问题标题】:Setup client side SASL authentication to connect with two different kafka clusters设置客户端 SASL 身份验证以连接两个不同的 kafka 集群
【发布时间】:2020-07-26 15:22:02
【问题描述】:

我有连接到我的 kafka 集群的 spring boot 应用程序。 应用程序(作为 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 配置文件。

【问题讨论】:

    标签: java apache-kafka jaas sasl


    【解决方案1】:

    从 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 文件

    【讨论】:

      猜你喜欢
      • 2017-09-14
      • 2015-07-29
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      相关资源
      最近更新 更多