文章

🍀SpringBoot:项目集成 Kafka 启动报错

kafka 生产消费使用kerberos认证情况(9094端口)启动报错:

Caused by: v11.org.apache.kafka.common.KafkaException: javax.security.auth.login.LoginException: Could not login: the client is being asked for a password, but the Kafka client code does not currently support obtaining a password from the user. not available to garner  authentication information from the user
	at v11.org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:125)
	at v11.org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:140)
	at v11.org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:65)
	at v11.org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:88)
	at v11.org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:413)
	... 73 common frames omitted

Caused by: javax.security.auth.login.LoginException: Could not login: the client is being asked for a password, but the Kafka client code does not currently support obtaining a password from the user. not available to garner  authentication information from the user
	at com.chinawayltd.op.common.gmq.login.Krb5LoginModule.promptForPass(Krb5LoginModule.java:707)

v11.org.apache.kafka.common.security.authenticator.AbstractLogin.login(AbstractLogin.java:52)
	at v11.org.apache.kafka.common.security.kerberos.KerberosLogin.login(KerberosLogin.java:98)
	at v11.org.apache.kafka.common.security.authenticator.LoginManager.<init>(LoginManager.java:53)
	at v11.org.apache.kafka.common.security.authenticator.LoginManager.acquireLoginManager(LoginManager.java:95)
	at v11.org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:114)
	... 77 common frames omitted

原因:java8u351 之后默认屏蔽了DES等弱密码算法,导致认证不通过

解决:

  1. 安装 java8u351 之后的 JDK 版本,但我的电脑是 MacM2 芯片的,支持的最早的也在这边这个版本之后,所以方法对我的电脑不适用;

  2. krb5.conf 文件的 [libdefaults] 节添加下面的配置,允许 JDK 使用弱密码算法

allow_weak_crypto = true

License:  CC BY 4.0