簡體   English   中英

當您有 2 個單獨的主題時配置“sasl.jaas.config”,每個主題都有單獨的連接密鑰?

[英]Configuration of 'sasl.jaas.config' when you have 2 separate topics, each having separate connection key?

當您有 2 個單獨的主題(每個主題都有單獨的連接密鑰)時,我正在尋找有關sasl.jaas.config配置的說明? 我正在使用spring-cloud-starter-stream-kafka 3.1 版。 我沒有使用spring-cloud-stream-binder-kafka ,我不知道這是否能解決我的問題

當只涉及一個主題時,我可以找到很多示例,使用消費者繼承的“ spring.cloud.stream.kafka.binder.configuration中的通用配置進行連接。

我有一個場景,我有一個輸入和 output ,它們都是各自獨立的主題,我想在 .yml 中配置它。 這可能是 via.yml 配置嗎?

我最好的猜測是嘗試配置密鑰spring.cloud.stream.bindings.input.configuration.sasl.jaas.config但該配置似乎不存在,是嗎?

這是我最好的猜測,但它不正確,因為它不起作用:

spring:
  ...
  cloud:
    stream:
      kafka:
        binder:
          brokers: ...
          defaultBrokerPort: 9093
          auto-create-topics: true
          configuration:
            security.protocol: SASL_SSL
            sasl:
              mechanism: PLAIN
        bindings:
          eeoi-sink:
            consumer:
              enableDlq: false
              dlqName: input_dlq
              ackEachRecord: true
              autoCommitOffset: false
      bindings:
        eeoi-sink:
          destination: input
          contentType: application/json
          group: $Default
          consumer:
            max-attempts: 1
          configuration:
            sasl:
              jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="...";
        acknowledgement-source:
          destination: output
          contentType: application/json
          group: $Default
          configuration:
            sasl:
              jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="...";

spring.cloud.stream.bindings.input.configuration.sasl.jaas.config將不起作用。 正確的屬性鍵是spring.cloud.stream.kafka.bindings.input.consumer.configuration.sasl.jaas.config

如果要使用單獨的 jaas 配置,則需要使用多綁定器設置。 有關一些想法,請參閱此應用程序: https://github.com/spring-cloud/spring-cloud-stream-samples/blob/master/multi-binder-samples/kafka-multi-binder-jaas/src/main/resources /應用程序.yml

在此示例中,它為binder 提供 jaas 配置,您可以簡單地將其替換為binder.configuration.sasl.jaas.config

將相同的 Kafka 集群用作兩個 binder 設置的代理,但jaas配置不同。

但是,我認為您遇到的問題是不同的。 您的jaas配置最終被委托給 java 安全配置,該配置根據 JVM 保留jaas配置的 static 副本。 因此,在 JVM 中靜態設置后提供的任何jaas配置都將被忽略。

有關相關問題的更多詳細信息,請參閱此: https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/874

此問題提供了一些解決此問題的方法。 一種是使兩個主題的連接字符串、密碼等相同,這樣,使用相同的jaas配置值。 這可能不是一個理想的解決方案,並且首先破壞了不同憑據的目的。 上述示例有效的原因是我們在兩個活頁夾中使用了相同的用戶名/密碼組合。

另一種選擇是將應用程序分成兩部分。 這樣,每個主題的jaas配置都駐留在不同的應用程序中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM