在 Ubuntu 上使用 SASL/OAUTHBEARER 配置 Kafka 后出现此错误

问题描述 投票:0回答:1

我已经使用 SASL/OAUTHBEARER 配置了 Kafka,但是,消费者和生产者在端口 9093 上访问 Kafka 时,代理会正确验证客户端,但是客户端不断尝试与代理建立连接,最终不交换消息。收到下面的警告,最终客户端无法生成或使用消息。我已经尝试过 Java 和 NodeJS 都不起作用。

13:46:13,731 INFO  org.apache.kafka.clients.NetworkClient                        - [Consumer clientId=admin, groupId=bp1-cg] Cancelled in-flight API_VERSIONS request with correlation id 30 due to node -1 being disconnected (elapsed time since creation: 171ms, elapsed time since send: 171ms, request timeout: 30000ms)
13:46:13,731 WARN  org.apache.kafka.clients.NetworkClient                        - [Consumer clientId=admin, groupId=bp1-cg] Bootstrap broker 158.177.250.15:9093 (id: -1 rack: null) disconnected
apache-kafka oauth sasl
1个回答
0
投票

我遇到了类似的问题。就我而言,这是由于 SASL 客户端状态为

COMPLETED
后连接会话生存期设置为 0 毫秒造成的。由于设置为 0ms,客户端将立即断开连接。

我建议通过在 log4j.properties 中启用此记录器来检查您的日志:

log4j.logger.org.apache.kafka.common.security=DEBUG

就我而言,我看到这个调试日志指出了奇怪的过期时间,我发现这对于理解问题是什么很有用:

Jan 28 03:26:48 vmi11111.contaboserver.net kafka-server-start.sh[2128284]: [2024-01-28 03:26:48,670] DEBUG Authentication complete; session max lifetime from broker config=0 ms, credential expiration=Tue Jan 20 19:00:12 CET 1970 (-1704702396264 ms); session expiration = Sun Jan 28 03:26:48 CET 2024 (0 ms), sending 0 ms to client (org.apache.kafka.common.security.authenticator.SaslServerAuthenticator)

我正在使用

SASL_SSL
OAUTHBEARER
机制以及自定义
AuthenticateCallbackHandler
OAuthBearerToken
。在我的实现中,我错误地将
lifetimeMs()
startTimeMs()
函数返回的值设置为秒单位,而它应该以毫秒为单位。 jwt 声明中的
exp
iat
位于第二位,因此我需要将其乘以 1000,然后再从函数返回它来解决此问题。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.