Estou tentando implementar a OAUTHBEARER como o mecanismo SASL. Parte do que é preciso para substituir o servidor e início de sessão de chamada de retorno de classes. Eu estou usando a janela de encaixe e, assim, definindo-os através de variáveis de ambiente:
KAFKA_LISTENER_NAME_OUTSIDE_OAUTHBEARER_SASL_SERVER_CALLBACK_HANDLER_CLASS=[class_name]
O que é estranho é que ele claramente está a carregar a classe designada como eu sou boa fazendo um log.warn("ctor...")
no construtor de disse classes. Mas o stacktrace mostra que ele não está chamando a handle
método fornecida classe, mas em vez disso, AbstractLogin$DefaultLoginHandler classe:
[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)
Existe alguma sugestão por que está carregando o manipulador de classe, mas não usá-lo? Se eu simplesmente remover as variáveis de ambiente para ambos LOGIN/SERVER_CALLBACK_HANDLER_CLASS, mesmo Excepção, mas sem o AVISAR, provando que a classe foi carregado. Uma possibilidade que eu realmente não posso reconciliar-se com o é que o stacktrace parece referir-se a um LoginCallbackHandler mas a classe invocado é o Servidor/ValidatorCallbackHandler; como se não fosse capaz de carregar o login manipulador de retorno de chamada e só o Avaliador manipulador de retorno de chamada, mas eu tenho o dobro verificado que a) as variáveis que pertencem à classe correta do nome (login==Login && server==Avaliador) e que os nomes de classe são, de fato, correto.