【发布时间】:2021-06-11 15:06:04
【问题描述】:
我正在使用 Flink 1.8 尝试连接到 Kerberized Kafka Broker。
我在 jaas.conf 中设置 KafkaClient 条目,如下所示:
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
renewTicket=true
serviceName="kafka";
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
renewTicket=true
serviceName="zookeeper";
};
并通过在代码中设置此属性来指向该 jaas 文件,该属性将与其余所需属性(bootstrap.servers 等)一起传递给 Kafka Consumer...
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", args[0]);
properties.setProperty("security.protocol", "SASL_PLAINTEXT");
properties.setProperty("java.security.auth.login.config","/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf");
我还尝试在启动 flink 应用程序之前在 KAFKA_OPTS 环境变量上指定 jaas.conf 路径。
我得到的错误是:
java.lang.IllegalArgumentException:找不到“KafkaClient” JAAS 配置中的条目。系统属性 'java.security.auth.login.config' 是 /tmp/jaas-6335181385007718768.conf
我不知道 jaas.conf 文件是否应该自动放入临时文件,或者它没有很好地检测指定的配置文件。临时文件在发生错误后被删除,但在 tmp 上有一些文件来自以前的启动,它们不包含任何代码(只有一些默认的 cmets 和空配置)。
【问题讨论】:
-
要从 JAAS 获取一些调试级别的日志记录,请添加
-Dsun.security.krb5.debug=true和-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext>> 但这不会解释该临时文件是如何创建并首先强制进入 JAAS...
标签: apache-kafka apache-flink kerberos jaas