我是 kafka 新手,我的要求是在 kafka 代理中实现 SASL PLAINTEXT(用户名/密码)安全性。我尝试了不同的事情,但到目前为止都取得了成功。我所做的就是
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_client="client-secret";
};
set KAFKA_OPTS="-Djava.security.auth.login.config=C:\kafka\config\kafka_server_jaas.conf"
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
我终于弄清楚了问题并解决了问题。我将与大家分享逐步信息,但首先让我告诉你们我正在使用 Java 23.0.1 和 Kafka 3.8.1 版本。 如果您尝试在互联网上找到解决方案,您会得到相同的配置设置,在我的情况下,它不起作用并出现错误 “原因:org.apache.kafka.common.errors.SaslAuthenticationException:无法配置 SaslClientAuthenticator 原因:java.lang.UnsupportedOperationException:仅当允许安全管理器时才支持 getSubject”
所以我尝试找到 getSubject 是什么,最后我得出的解决方案是我没有使用正确的 JAVA 版本,如果我降级到 Java 11 LTS 它将起作用。现在我必须用我所拥有的任何方式进行配置,所以我做了以下更改来工作
更新 java.policy 文件,在文件末尾与 getSubject 相关的权限,即 permission javax.security.auth.AuthPermission "getSubject";
在kafka的config文件夹下添加kafka.policy文件,并进行以下更改
授予{ 权限 javax.security.auth.AuthPermission "getSubject"; };
更新 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”; };
使用以下值设置 kafka opts 环境变量
set KAFKA_OPTS=-Djava.security.auth.login.config=C:\\kafka\\config\\kafka_server_jaas.conf -Djava.security.manager=allow