当您有 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
并且我不知道是否 that would solve my problem.
当只涉及 1 个主题时,我可以找到很多示例,使用 spring.cloud.stream.kafka.binder.configuration
中由消费者继承的“通用配置”进行连接。
我有一个场景,我有一个输入和输出,每个都有自己单独的主题,我想在 .yml 中配置它。这可以通过 .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 配置,你需要使用 multi-binder 设置。请参阅此应用程序以获取一些想法:https://github.com/spring-cloud/spring-cloud-stream-samples/blob/master/multi-binder-samples/kafka-multi-binder-jaas/src/main/resources/application.yml
在此示例中,它提供了 jaas config for the binder,您只需将其替换为 binder.configuration.sasl.jaas.config
。
将相同的 Kafka 集群用作两个活页夹设置的代理,但 jaas
配置不同。
但是,我认为您 运行 遇到的问题是不同的。您的 jaas
配置最终委托给 java 安全配置,它为每个 JVM 保留 jaas
配置的静态副本。因此,在 JVM 中静态设置后提供的任何 jaas
配置都将被忽略。
有关相关问题的更多详细信息,请参阅:https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/874
这个问题提供了一些解决这个问题的方法。一种是使两个主题的连接字符串、密码等相同,这样,使用相同的 jaas
配置值。这可能不是一个理想的解决方案,并且首先违背了不同凭证的目的。上述示例之所以有效,是因为我们在两个活页夹中使用了相同的 username/password 组合。
另一种选择是将应用程序一分为二。这样,每个主题的 jaas
配置驻留在单独的应用程序中。
当您有 2 个单独的主题时,我正在寻找有关 sasl.jaas.config
配置的说明,每个主题都有单独的连接密钥?我正在使用 spring-cloud-starter-stream-kafka
版本 3.1。我没有使用 spring-cloud-stream-binder-kafka
并且我不知道是否 that would solve my problem.
当只涉及 1 个主题时,我可以找到很多示例,使用 spring.cloud.stream.kafka.binder.configuration
中由消费者继承的“通用配置”进行连接。
我有一个场景,我有一个输入和输出,每个都有自己单独的主题,我想在 .yml 中配置它。这可以通过 .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 配置,你需要使用 multi-binder 设置。请参阅此应用程序以获取一些想法:https://github.com/spring-cloud/spring-cloud-stream-samples/blob/master/multi-binder-samples/kafka-multi-binder-jaas/src/main/resources/application.yml
在此示例中,它提供了 jaas config for the binder,您只需将其替换为 binder.configuration.sasl.jaas.config
。
将相同的 Kafka 集群用作两个活页夹设置的代理,但 jaas
配置不同。
但是,我认为您 运行 遇到的问题是不同的。您的 jaas
配置最终委托给 java 安全配置,它为每个 JVM 保留 jaas
配置的静态副本。因此,在 JVM 中静态设置后提供的任何 jaas
配置都将被忽略。
有关相关问题的更多详细信息,请参阅:https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/874
这个问题提供了一些解决这个问题的方法。一种是使两个主题的连接字符串、密码等相同,这样,使用相同的 jaas
配置值。这可能不是一个理想的解决方案,并且首先违背了不同凭证的目的。上述示例之所以有效,是因为我们在两个活页夹中使用了相同的 username/password 组合。
另一种选择是将应用程序一分为二。这样,每个主题的 jaas
配置驻留在单独的应用程序中。