【问题标题】:Kafka loading SASL callback handling class but not using itKafka加载SASL回调处理类但不使用它
【发布时间】:2022-01-02 05:15:39
【问题描述】:

我正在尝试将 OAUTHBEARER 实现为 SASL 机制。其中一部分是我需要覆盖服务器和登录回调处理程序类。我正在使用 docker,因此通过环境变量设置它们:

KAFKA_LISTENER_NAME_OUTSIDE_OUTHBEARER_SASL_SERVER_CALLBACK_HANDLER_CLASS=[class_name]

奇怪的是,它显然正在加载指定的类,因为我在所述类的构造函数中轻松地执行了log.warn("ctor...")。但是堆栈跟踪显示它没有调用所提供类的handle 方法,而是调用了 AbstractLogin$DefaultLoginHandler 类:

[2021-11-23 17:41:57,137] WARN OAuthAuthenticateValidatorCallbackHandler - ctor: v1.1 (com.oauth2.security.oauthbearer.OAuthAuthenticateValidatorCallbackHandler) [2021-11-23 17:41:57,153] ERROR Unrecognized SASL Login callback (org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule) javax.security.auth.callback.UnsupportedCallbackException: Unrecognized SASL Login callback at org.apache.kafka.common.security.authenticator.AbstractLogin$DefaultLoginCallbackHandler.handle(AbstractLogin.java:105) at org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule.identifyToken(OAuthBearerLoginModule.java:316)

对于为什么加载处理程序类但不使用它有什么建议吗?如果我只是删除 LOGIN/SERVER_CALLBACK_HANDLER_CLASS 的环境变量,则相同的异常但没有 WARN 证明该类已加载。我无法真正接受的一种可能性是堆栈跟踪似乎引用了 LoginCallbackHandler 但调用的类是 Server/ValidatorCallbackHandler;好像它无法加载登录回调处理程序和只有验证器回调处理程序,但我已经仔细检查了 a) 环境变量与正确的类名 (login==Login && server==Validator) 相关,并且类名确实是正确的。

【问题讨论】:

    标签: apache-kafka oauth sasl


    【解决方案1】:

    当我发布到 stackoverflow 并且答案神奇地显现出来时,会发生一些事情。

    我需要做的还包括其他监听器的 SASL 配置:

    KAFKA_LISTENER_NAME_INSIDE_PLAIN_SASL_JAAS_CONFIG="org.apache..."

    然后它适用于 INSIDE://PLAIN 和 OUTSIDE://OUTHBEARER。

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 2017-12-15
      • 2021-01-13
      • 2017-08-09
      • 2017-05-18
      • 2019-10-04
      • 2019-11-11
      • 1970-01-01
      相关资源
      最近更新 更多