authentication - 由于不正确的 jaas.conf 导致 Kafka TopicAuthorizationException
问题描述
我指的是JAAS 登录配置文件。它讨论了两种指定要使用的登录配置文件的方法:
- 我们设置
jaas.conf
通过 VM arg的第一种方法java.security.auth.login.config
。 - 第二个通过安全属性文件是
java.security
位于lib/security
JRE 目录下的文件。在第二种方法中,我们可以指定多个文件。
有没有办法使用设置 VM arg 的第一种方法来指定多个 jaas.conf 文件java.security.auth.login.config
?或者,如果您对解决问题有任何其他建议。
背景:
我面临的问题是:我们有 2 种不同类型的 Kafka 事件(比如ABC和XYZ),它们对应jaas.conf
于不同的Keytab和principal。当它想要发布ABC时,它会将java.security.auth.login.config
属性设置为ABC 的 jaas.conf ,并在我们想要发布时更改为XYZ 的 jaas.conf 。
但是,上述逻辑存在一些问题,并且org.springframework.kafka.core.KafkaProducerException: Failed to send; nested exception is org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics
对于它尝试发布的第二个事件失败。即使对于第二个事件,它也会尝试使用第一个事件的原因,初步查看原因jaas.conf
。
堆栈跟踪:
org.springframework.kafka.core.KafkaProducerException: Failed to send; nested exception is org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [XYZ]
at org.springframework.kafka.core.KafkaTemplate$1.onCompletion(KafkaTemplate.java:341)
at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:827)
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:768)
at org.springframework.kafka.core.DefaultKafkaProducerFactory$CloseSafeProducer.send(DefaultKafkaProducerFactory.java:272)
at org.springframework.kafka.core.KafkaTemplate.doSend(KafkaTemplate.java:327)
at org.springframework.kafka.core.KafkaTemplate.send(KafkaTemplate.java:197)
解决方案
推荐阅读
- excel - 组合框列位置
- if-statement - ifelse 在我想要 0 时给我 NA
- flutter - 如何仅隐藏 TextField 中的某些文本
- gradle - 任务计数与 gradle build 命令输出中显示的可操作任务之间有什么关系?
- amazon-web-services - 如何使用 Power Shell 为 AWS IAM 策略设置标签
- firebase - Firebase 电话验证 OTP 某些号码已验证,其他号码在 PHONE 中收到 OTP 后未验证,当我将颤振应用程序上传到 Play 商店时,
- c# - 从 appsettings 配置部分读取值并在预定义的位置注入值
- php - 语法错误,C:\xamppp\htdocs\ecommerce\include\function.php 中的意外 '$path' (T_VARIABLE) 第 39 行
- javascript - 获取具有动态生成 ID 的元素
- assembly - 有没有办法从 C64 的 Kick Assembler 中的宏访问全局常量