Estoy tratando de implementar OAUTHBEARER como el mecanismo SASL. Parte de eso es que necesito reemplazar el servidor de inicio de sesión y de devolución de llamada controlador de clases. Estoy usando docker, y de esta manera establecer con ellos a través de variables de entorno:
KAFKA_LISTENER_NAME_OUTSIDE_OAUTHBEARER_SASL_SERVER_CALLBACK_HANDLER_CLASS=[class_name]
Lo que es extraño es que está claro que es la carga de la clase designada como soy fácilmente haciendo un log.warn("ctor...")
en el constructor de dicha clase. Pero el stacktrace muestra que no está llamando a la handle
método del cable de la clase, pero en lugar AbstractLogin$DefaultLoginHandler clase:
[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)
Hay alguna sugerencia de por qué se está cargando el controlador de clase, pero no se usa? Si yo simplemente eliminar las variables de entorno para ambos LOGIN/SERVER_CALLBACK_HANDLER_CLASS, misma Excepción, pero sin ADVERTIR demostrando que la clase se ha cargado. Una posibilidad, que realmente no puedo reconciliar con es que el stacktrace parece referirse a un LoginCallbackHandler pero la clase que invoca es el Servidor/ValidatorCallbackHandler; como si no fuera capaz de cargar el inicio de sesión de devolución de llamada controlador y sólo el Validador de controlador callback, pero me han registrado el doble que a) las variables de entorno que pertenecen a la clase correcta de nombre de usuario (login==Login && server==Validator) y que los nombres de las clases son de hecho correcta.