内容纲要
概要描述
该问题多出现在 TDH 4.x 的 kafka 中,当集群开启了 guardian kerberos 后,需要先认证再生产消息,jaas.conf
配置的不完整,即会报如下错误:
Caused by: org.apache.kafka.common.KafkaException: java.lang.IllegalArgumentException: Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is ......
详细说明
检查 jaas.conf
文件内容,可发现默认的只有 KafkaServer
和 Client
两个部分,而报错可以明显看出是缺少 KafkaClient
;所以直接在 jaas.conf
中新增 KafkaClient
部分,内容直接用 KafkaServer
的即可,换一个名字就行。
如:
KafkaServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/etc/kafka1/conf/kafka.keytab"
storeKey=true
useTicketCache=false
principal="kafka/jiujiu-tdh-60@TDH";
};
// Zookeeper client authentication
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
useTicketCache=false
keyTab="/etc/kafka1/conf/kafka.keytab"
principal="kafka/jiujiu-tdh-60@TDH";
};
// Kafka Client
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/etc/kafka1/conf/kafka.keytab"
storeKey=true
useTicketCache=false
principal="kafka/jiujiu-tdh-60@TDH";
};
案例直接在文件最后按 KafkaServer
添加了 KafkaClient
,然后再使用 kafka 的 CLI 生产消息正常。