You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cloud Kafka SASL_SSL配置不生效,求正确配置方法

问题

在Spring Cloud应用中配置application.yml以启用SASL_SSL安全协议,配置内容如下:

spring:
  cloud:
    stream:
      bindings:
        kafkaDemoTopic:
          destination: kafka_demo_topic
    kafka:
       binder:
           autoAddPartitions: true
           brokers: localhost:9092
           autoCreateTopics: false
           configuration:
            security:
                protocol: SASL_SSL
            sasl:
             jaas:
              config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user"  password="sepultura1";

启动应用后,日志显示security.protocol = PLAINTEXT,SASL_SSL并未生效,且出现AdminClient连接失败的日志:

[AdminClient clientId=adminclient-1] Node -1 disconnected.
[AdminClient clientId=adminclient-1] Cancelled in-flight API_VERSIONS request with correlation id 0 due to node -1 being disconnected...

解决方案

1. 修正YAML缩进与配置项

原配置存在缩进不一致的问题,导致Kafka客户端无法正确解析配置;同时缺少sasl.mechanism配置(默认值为GSSAPI,与ScramLoginModule不兼容)。

正确配置示例(扁平化写法,更易维护):

spring:
  cloud:
    stream:
      bindings:
        kafkaDemoTopic:
          destination: kafka_demo_topic
    kafka:
      binder:
        autoAddPartitions: true
        brokers: localhost:9092
        autoCreateTopics: false
        configuration:
          security.protocol: SASL_SSL
          sasl.mechanism: SCRAM-SHA-256
          sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="sepultura1";

或嵌套写法:

spring:
  cloud:
    stream:
      bindings:
        kafkaDemoTopic:
          destination: kafka_demo_topic
    kafka:
      binder:
        autoAddPartitions: true
        brokers: localhost:9092
        autoCreateTopics: false
        configuration:
          security:
            protocol: SASL_SSL
          sasl:
            mechanism: SCRAM-SHA-256
            jaas:
              config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="sepultura1";

2. 单独配置AdminClient(可选)

若上述配置后AdminClient仍未加载SASL_SSL参数,可单独为AdminClient指定配置:

spring:
  cloud:
    stream:
      kafka:
        binder:
          admin:
            configuration:
              security.protocol: SASL_SSL
              sasl.mechanism: SCRAM-SHA-256
              sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="sepultura1";

关键注意点

  • YAML对缩进敏感,确保所有子配置项的缩进层级统一(建议用2或4个空格)。
  • sasl.mechanism必须与Kafka服务端配置的SCRAM机制一致(如SCRAM-SHA-1或SCRAM-SHA-256)。
  • 所有Kafka客户端(生产者、消费者、AdminClient)的配置需放在spring.cloud.stream.kafka.binder.configuration下,确保全局生效。

内容的提问来源于stack exchange,提问作者Petr Kostroun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:29:50