Já jsem se snaží realizovat OAUTHBEARER jako SASL mechanismus. Součástí, které je nutné přepsat oba serveru a přihlašovací callback handler třídy. Jsem pomocí docker a tak, že je nastavíte pomocí proměnné prostředí:
KAFKA_LISTENER_NAME_OUTSIDE_OAUTHBEARER_SASL_SERVER_CALLBACK_HANDLER_CLASS=[class_name]
Co je divné je, že to evidentně je načítání určené třídy jako já obratně dělá log.warn("ctor...")
v konstruktoru řekl tříd. Ale stacktrace ukazuje, že to není volání handle
metody zadané třídy, ale místo toho AbstractLogin$DefaultLoginHandler třída:
[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)
Je tam nějaké návrhy na to, proč je načítání popisovač třídy, ale ne používat? Pokud jsem jednoduše odstranit proměnné prostředí pro oba PŘIHLÁŠENÍ/SERVER_CALLBACK_HANDLER_CLASS, stejné Výjimky, ale bez VAROVAT dokázat, že třída je nabitá. Jednou z možností, se kterou se nemůžu smířit s tím, že na stacktrace se zdá odkazovat na LoginCallbackHandler ale třída je vyvolána Server/ValidatorCallbackHandler; jako kdyby to nebyl schopen načíst přihlašovací callback handler a pouze Validátor callback handler, ale já jsem dvakrát zkontrolováno, že a) proměnné prostředí se týkají správné třídy jméno (login==Login && server==Validátor), a že názvy tříd jsou skutečně správné.