Sto cercando di implementare OAUTHBEARER come SASL meccanismo. Parte di questo è che ho bisogno di ignorare sia il server di login gestore di callback classi. Sto usando la finestra mobile e così via le variabili di ambiente:
KAFKA_LISTENER_NAME_OUTSIDE_OAUTHBEARER_SASL_SERVER_CALLBACK_HANDLER_CLASS=[nome_classe]
Quello che è strano è che chiaramente il caricamento della classe designata come sono comodamente facendo un log.warn("ctor...")
nel costruttore di tali classi. Ma il stacktrace dimostra che non è di chiamare il handle
metodo di dotazione di classe, ma invece 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)
C'è qualche suggerimento per perché è carico il gestore di classe, ma non lo si utilizza? Se ho semplicemente rimuovere le variabili di ambiente per entrambi LOGIN/SERVER_CALLBACK_HANDLER_CLASS, stessa Eccezione, ma senza AVVERTIRE dimostrando che la classe non è stato caricato. Una possibilità che non riesco a conciliare con il fatto che il stacktrace sembra riferirsi a un LoginCallbackHandler ma la classe che viene richiamato è il Server/ValidatorCallbackHandler; come se non fosse stato in grado di caricare il login gestore di callback e solo il Validatore gestore di callback, ma ho ricontrollato che a) le variabili di ambiente, inerente il corretto nome della classe (login==Login && server==Validator) e che i nomi delle classi sono davvero corretti.