KAFKA 安全错误 - SASL 纯文本错误

问题描述 投票:0回答:1

我是 kafka 新手,我的要求是在 kafka 代理中实现 SASL PLAINTEXT(用户名/密码)安全性。我尝试了不同的事情,但到目前为止都取得了成功。我所做的就是

  1. 创建kafka_server_jaas.conf文件
    
      KafkaServer {
       org.apache.kafka.common.security.plain.PlainLoginModule required
    
           username="admin"
    
           password="admin-secret"
    
           user_admin="admin-secret"
    
           user_client="client-secret";
    };
  1. 在环境变量中设置KAFKA_OPTS,但我也在kafka-run-class.bat文件中设置
      set KAFKA_OPTS="-Djava.security.auth.login.config=C:\kafka\config\kafka_server_jaas.conf"
  1. server.properties 文件有以下更改
    listeners=SASL_PLAINTEXT://localhost:9092
    advertised.listeners=SASL_PLAINTEXT://localhost:9092
    security.inter.broker.protocol=SASL_PLAINTEXT
    sasl.enabled.mechanisms=PLAIN
    sasl.mechanism.inter.broker.protocol=PLAIN
    authorizer.class.name=kafka.security.authorizer.AclAuthorizer
    allow.everyone.if.no.acl.found=true
    auto-create-topics-enable=true

zookeeper 运行良好,但是当我执行以下命令来运行 kafka 服务器时

    .\bin\windows\kafka-server-start.bat .\config\server.properties

我遇到以下错误

Error connecting to node localhost:9092 

java.io.IOException: Channel could not be created for socket java.nio.channels.SocketChannel[closed]

Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.errors.SaslAuthenticationException: Failed to configure SaslClientAuthenticator
c# apache-kafka sasl confluent-kafka-dotnet
1个回答
0
投票

我终于弄清楚了问题并解决了问题。我将与大家分享逐步信息,但首先让我告诉你们我正在使用 Java 23.0.1 和 Kafka 3.8.1 版本。 如果您尝试在互联网上找到解决方案,您会得到相同的配置设置,在我的情况下,它不起作用并出现错误 “原因:org.apache.kafka.common.errors.SaslAuthenticationException:无法配置 SaslClientAuthenticator 原因:java.lang.UnsupportedOperationException:仅当允许安全管理器时才支持 getSubject

所以我尝试找到 getSubject 是什么,最后我得出的解决方案是我没有使用正确的 JAVA 版本,如果我降级到 Java 11 LTS 它将起作用。现在我必须用我所拥有的任何方式进行配置,所以我做了以下更改来工作

  1. 更新 java.policy 文件,在文件末尾与 getSubject 相关的权限,即 permission javax.security.auth.AuthPermission "getSubject";

  2. 在kafka的config文件夹下添加kafka.policy文件,并进行以下更改

    授予{ 权限 javax.security.auth.AuthPermission "getSubject"; };

  3. 更新 kafka_server.jaas 文件在 kafka 的 config 文件夹下可用,并进行新的更改

    Kafka服务器{ 需要 org.apache.kafka.common.security.plain.PlainLoginModule 用户名=“管理员” 密码=“管理员密码” user_admin =“管理员秘密”; }; 卡夫卡客户端{ org.apache.kafka.common.security.plain.PlainLoginModule 需要 用户名=“admin” 密码=“admin-secret”; };

  4. 使用以下值设置 kafka opts 环境变量

set KAFKA_OPTS=-Djava.security.auth.login.config=C:\\kafka\\config\\kafka_server_jaas.conf -Djava.security.manager=allow

  1. 现在先运行zookeeper,然后运行kafka,两者都应该运行而不会抛出任何错误。
© www.soinside.com 2019 - 2024. All rights reserved.