我正在使用Flink1.8尝试连接到一个KerberizedKafka经纪人。
我正在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使用者。。。
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\u opts环境变量上指定jaas.conf路径。
我得到的错误是:
java.lang.illegalargumentexception:在jaas配置中找不到“kafkaclient”条目。系统属性“java.security.auth.login.config”是/tmp/jaas-6335181385007718768.conf
我不知道jaas.conf文件是否应该自动放入临时文件,或者它没有很好地检测到指定的配置文件。临时文件在错误发生后被删除,但是tmp上有一些以前启动的文件,它们不包含任何代码(只有一些默认注解和空配置)。
1条答案
按热度按时间4si2a6ki1#
设置中存在两个问题;首先,传递jaas conf文件位置,然后传递jaas conf文件内容
java.security.auth.login.config是系统属性。所以您应该通过在代码中设置系统属性
或者在运行时设置jvm参数-d。
jaas文件条目应配置为使用keytab或用户名/密码
kafka-keytab-auth-jaas.conf文件
kafka-password-auth-jaas.conf文件