Je suis en train de mettre en œuvre OAUTHBEARER comme le mécanisme SASL. C'est en partie j'ai besoin de remplacer à la fois le serveur et de connexion du gestionnaire de rappel des classes. Je suis en utilisant le panneau et donc un réglage via les variables d'environnement:
KAFKA_LISTENER_NAME_OUTSIDE_OAUTHBEARER_SASL_SERVER_CALLBACK_HANDLER_CLASS=[class_name]
Ce qui est bizarre, c'est que c'est clairement le chargement de la classe que je suis haut la main en faisant un log.warn("ctor...")
dans le constructeur de ces catégories. Mais la stacktrace montre qu'il n'est pas l'appel de la handle
méthode de la classe, mais au lieu 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)
Est-il des suggestions quant à pourquoi il est le chargement de la classe de gestionnaire, mais ne l'utilise pas? Si j'ai simplement supprimer les variables d'environnement pour les LOGIN/SERVER_CALLBACK_HANDLER_CLASS, même Exception, mais sans les AVERTIR de prouver que la classe a été chargé. Une possibilité que je ne peux pas vraiment les rapprocher, c'est que la stacktrace semble renvoyer à un LoginCallbackHandler mais la classe invoquée est le Serveur/ValidatorCallbackHandler; comme si elle n'était pas en mesure de charger la connexion du gestionnaire de rappel et seulement le Validateur du gestionnaire de rappel, mais j'ai vérifié que les variables d'environnement concernent le bon nom de la classe (login==Login && server==Validator) et que les noms de classe sont en effet correcte.