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

Spring Boot Kafka:SASL_PLAINTEXT+SCRAM-SHA-512的SslBundle配置问题

针对SASL_PLAINTEXT + SCRAM-SHA-512场景的SslBundle适配方案

首先明确:你当前使用的是SASL_PLAINTEXT协议,这是明文传输+SASL认证的组合,本身不需要SSL加密,所以无需配置SSL相关的SslBundle实例。但为了适配Spring Boot 3.2+废弃的buildAdminProperties()方法,只需按以下方式调整即可:

1. 优化原有Kafka配置(可选但更规范)

可以将硬编码的JAAS配置替换为Spring Boot原生配置项,避免直接编写JAAS字符串,更符合框架规范:

spring:
  kafka:
    security:
      protocol: SASL_PLAINTEXT
    bootstrap-servers: adress_of_the_server
    properties:
      sasl:
        mechanism: SCRAM-SHA-512
    jaas:
      enabled: true
      login-module: org.apache.kafka.common.security.scram.ScramLoginModule
      options:
        username: "username"
        password: "password"

2. 代码中适配新的buildAdminProperties方法

在需要构建Kafka Admin客户端配置的代码中,通过依赖注入获取SslBundles实例,直接传入重载方法即可:

import org.springframework.boot.autoconfigure.kafka.KafkaProperties;
import org.springframework.boot.ssl.SslBundles;
import org.springframework.stereotype.Component;
import java.util.Map;

@Component
public class KafkaAdminConfig {

    private final KafkaProperties kafkaProperties;
    private final SslBundles sslBundles;

    // 构造器注入依赖
    public KafkaAdminConfig(KafkaProperties kafkaProperties, SslBundles sslBundles) {
        this.kafkaProperties = kafkaProperties;
        this.sslBundles = sslBundles;
    }

    public void initAdminClient() {
        // 使用新的重载方法构建Admin配置
        Map<String, Object> adminProps = kafkaProperties.buildAdminProperties(sslBundles);
        // 后续创建AdminClient逻辑
        // AdminClient.create(adminProps);
    }
}

由于你使用的是SASL_PLAINTEXT,SslBundles仅作为参数传入,不会影响原有SASL认证逻辑,Spring Boot会自动处理无SSL配置的场景。

补充:若后续切换到SASL_SSL协议

如果之后需要升级到加密传输的SASL_SSL协议,才需要配置SslBundle,示例如下:

spring:
  kafka:
    security:
      protocol: SASL_SSL
    ssl:
      bundle: "kafka-ssl-bundle" # 引用自定义SSL Bundle
  ssl:
    bundles:
      kafka-ssl-bundle:
        truststore:
          location: "classpath:kafka-truststore.jks"
          password: "truststore-password"
        keystore:
          location: "classpath:kafka-keystore.jks"
          password: "keystore-password"

此时SslBundles会加载上述配置,为Kafka客户端提供SSL加密所需的证书和密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:05:08