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

如何解决Kafka SASL_SSL模式下SCRAM-SHA-256认证失败问题

Kafka SASL_SSL (SCRAM-SHA-256) 认证失败排查思路

针对你遇到的SCRAM-SHA-256认证失败问题,从配置和操作流程入手,排查以下几个关键点:

1. 确认SCRAM用户凭证已在Kafka中创建

SCRAM认证需要提前在Kafka元数据存储中创建用户凭证,仅在JAAS配置里填写用户名密码无效。执行以下命令创建凭证(若当前Kafka无法启动,可临时改用PLAINTEXT模式启动后执行):

bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --add-config 'SCRAM-SHA-256=[iterations=4096,password=sepultura1]' --entity-type users --entity-name user

执行完成后重启Kafka服务。

2. 修正JAAS配置的格式错误

  • ZooKeeper JAAS配置中,username和password使用了中文引号“”,会导致解析失败,需替换为英文双引号:
    Client{
      org.apache.zookeeper.server.auth.DigestLoginModule required
      username="user"
      password="sepultura1";
    };
    Server{
         org.apache.zookeeper.server.auth.DigestLoginModule required
         user_user="sepultura1";
    };
    
  • Kafka服务器JAAS配置中的"是HTML转义字符,实际文件中应直接使用英文双引号,无需转义:
    KafkaServer {
       org.apache.kafka.common.security.scram.ScramLoginModule required
       username="user"
       password="sepultura1";
    };
    Client {
        org.apache.zookeeper.server.auth.DigestLoginModule required
        user="user"
        password="sepultura1";
    };
    KafkaClient {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username="user"
    password="sepultura1";
    };
    

3. 确保服务启动时正确加载JAAS配置

启动Kafka和ZooKeeper时,必须通过环境变量指定对应的JAAS配置文件路径:

  • 启动Kafka(Windows环境):
    set KAFKA_OPTS=-Djava.security.auth.login.config=C:\path\to\kafka_jaas.conf
    .\bin\windows\kafka-server-start.bat .\config\server.properties
    
    Linux/macOS环境:
    export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_jaas.conf"
    bin/kafka-server-start.sh config/server.properties
    
  • 启动ZooKeeper(Windows环境):
    set ZOOKEEPER_OPTS=-Djava.security.auth.login.config=C:\path\to\zookeeper_jaas.conf
    .\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
    
    Linux/macOS环境:
    export ZOOKEEPER_OPTS="-Djava.security.auth.login.config=/path/to/zookeeper_jaas.conf"
    bin/zookeeper-server-start.sh config/zookeeper.properties
    

4. 验证SSL配置的有效性

虽然日志提示SASL认证失败,但SSL配置异常也可能间接导致连接失败:

  • 确认keystore.jks和truststore.jks是通过keytool正确生成的有效证书,且证书的CN字段与listeners中配置的localhost一致。
  • ssl.client.auth=required要求客户端必须提供证书,确保Kafka内部broker连接(使用KafkaClient配置)的SSL密钥库和信任库配置正确(你已配置相关项,可再次确认路径和密码正确性)。

5. 检查跨broker认证配置一致性

由于security.inter.broker.protocol=SASL_SSL,broker之间的连接也会使用SCRAM-SHA-256认证:

  • 确保KafkaClient段的JAAS配置用户名密码与已创建的SCRAM凭证一致。
  • 确认inter.broker.listener.name(未配置则默认使用第一个listener)指向的SASL_SSL监听器配置正确。

内容的提问来源于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 21:29:53