You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@kafka.apache.org by 张帅轲 <sh...@gmail.com> on 2023/05/23 12:53:36 UTC

When SpringBoot kafka enables jaas, ‘Caused by: org.apache.kafka.common.KafkaException: javax.security.auth.login.LoginException: unable to find LoginModule class: org.apache.kafka.common.security.plain.PlainLoginModule’

*In what version(s) of Spring for Apache Kafka are you seeing this issue?*

  <groupId>org.springframework.kafka</groupId>
  <artifactId>spring-kafka</artifactId>
  <version>2.2.4.RELEASE</version>

*Describe the bug*

I have enabled spring-kafka in lower version of springboot (2.1.3), below
is my configuration

spring:
  kafka:
    ###########【Kafka集群】###########
    bootstrap-servers:
    jaas:
      enabled: true
      loginModule: org.apache.kafka.common.security.plain.PlainLoginModule
      options:
        username:
        password:
    properties:
      security.protocol: SASL_PLAINTEXT
      sasl.mechanism: PLAIN
    producer:
      retries: 3 # 重试次数
      acks: all # 应答级别:多少个分区副本备份完成时向生产者发送ack确认(可选0、1、all/-1)
      batch-size: 16384 # 批量大小
      buffer-memory: 33554432 # 生产端缓冲区大小
      # Kafka提供的序列化和反序列化类
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: MyGroup1
      enable-auto-commit: false
      auto-commit-interval: 1000
      auto-offset-reset: latest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer:
org.apache.kafka.common.serialization.StringDeserializer
      max-poll-records: 50

I need to use jaas to authenticate, encrypt and protect the sending of my
spring-kafka data, but I got this error after calling kafkaTemplate


2023-05-23 19:04:43 [arthas-command-execute] WARN
c.t.a.c.c.m.TimeTunnelCommand -tt failed.
com.taobao.arthas.core.command.express.ExpressException:
ognl.MethodFailedException: Method "doctorAuditIdCard" failed for
object cn.mwcare.doctorplus.boss.sync.impl.DefaultSendKafkaMessageService@210c4071
[org.apache.kafka.common.KafkaException: Failed to construct kafka
producer]
        at com.taobao.arthas.core.command.express.OgnlExpress.get(OgnlExpress.java:43)
        at com.taobao.arthas.core.command.monitor200.TimeTunnelCommand.processWatch(TimeTunnelCommand.java:370)
        at com.taobao.arthas.core.command.monitor200.TimeTunnelCommand.process(TimeTunnelCommand.java:297)
        at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)
        at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)
        at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)
        at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)
        at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:385)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: ognl.MethodFailedException: Method "doctorAuditIdCard"
failed for object
cn.mwcare.doctorplus.boss.sync.impl.DefaultSendKafkaMessageService@210c4071
        at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1556)
        at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
        at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1620)
        at ognl.ASTMethod.getValueBody(ASTMethod.java:91)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
        at ognl.SimpleNode.getValue(SimpleNode.java:258)
        at ognl.ASTChain.getValueBody(ASTChain.java:141)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
        at ognl.SimpleNode.getValue(SimpleNode.java:258)
        at ognl.Ognl.getValue(Ognl.java:470)
        at ognl.Ognl.getValue(Ognl.java:572)
        at ognl.Ognl.getValue(Ognl.java:542)
        at com.taobao.arthas.core.command.express.OgnlExpress.get(OgnlExpress.java:40)
        ... 14 common frames omitted
Caused by: org.apache.kafka.common.KafkaException: Failed to construct
kafka producer
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:457)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:289)
        at org.springframework.kafka.core.DefaultKafkaProducerFactory.createKafkaProducer(DefaultKafkaProducerFactory.java:318)
        at org.springframework.kafka.core.DefaultKafkaProducerFactory.createProducer(DefaultKafkaProducerFactory.java:305)
        at org.springframework.kafka.core.DefaultKafkaProducerFactory$$FastClassBySpringCGLIB$$6502e513.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
        at org.springframework.cloud.sleuth.instrument.messaging.SleuthKafkaAspect.wrapProducerFactory(TraceMessagingAutoConfiguration.java:240)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
        at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
        at org.springframework.kafka.core.DefaultKafkaProducerFactory$$EnhancerBySpringCGLIB$$265da808.createProducer(<generated>)
        at org.springframework.kafka.core.KafkaTemplate.getTheProducer(KafkaTemplate.java:437)
        at org.springframework.kafka.core.KafkaTemplate.doSend(KafkaTemplate.java:367)
        at org.springframework.kafka.core.KafkaTemplate.send(KafkaTemplate.java:190)
        at cn.mwcare.doctorplus.boss.sync.impl.DefaultSendKafkaMessageService.sendMessageQueue(DefaultSendKafkaMessageService.java:228)
        at cn.mwcare.doctorplus.boss.sync.impl.DefaultSendKafkaMessageService.doctorAuditIdCard(DefaultSendKafkaMessageService.java:87)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:899)
        at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1544)
        ... 26 common frames omitted
Caused by: org.apache.kafka.common.KafkaException:
javax.security.auth.login.LoginException: unable to find LoginModule
class: org.apache.kafka.common.security.plain.PlainLoginModule
        at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:153)
        at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:140)
        at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:65)
        at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:88)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:414)
        ... 58 common frames omitted
Caused by: javax.security.auth.login.LoginException: unable to find
LoginModule class:
org.apache.kafka.common.security.plain.PlainLoginModule
        at javax.security.auth.login.LoginContext.invoke(LoginContext.java:794)
        at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682)
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
        at javax.security.auth.login.LoginContext.login(LoginContext.java:587)
        at org.apache.kafka.common.security.authenticator.AbstractLogin.login(AbstractLogin.java:60)
        at org.apache.kafka.common.security.authenticator.LoginManager.<init>(LoginManager.java:64)
        at org.apache.kafka.common.security.authenticator.LoginManager.acquireLoginManager(LoginManager.java:114)
        at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:142)
        ... 62 common frames omitted


The error message told me that the PlainLoginModule could not be loaded. I
first suspected that there was a conflict in the coordinate file of Maven,
and all of them have been ruled out so far.
[image: image]
<https://user-images.githubusercontent.com/32430752/240258230-55e54191-c7f6-43c7-8b53-b9cec529e428.png>

If you don't believe me, let's verify

[image: image]
<https://user-images.githubusercontent.com/32430752/240259772-4fcb9845-1740-4568-aba7-13b24acc6455.png>

please help me😫