Соединение JMX-RMI / T3 приводит к тому, что CallbackHandler создает исключение при наличии ContextHandlerCallback - PullRequest
1 голос
/ 02 декабря 2010

У меня есть собственный Аутентификатор в Weblogic 10.3, который я использую и у меня проблемы.

Когда пользователь подключается и аутентифицируется по HTTP, все работает нормально.Однако, если соединение является соединением JMX-RMI / T3, вызов javax.security.auth.callback.CallbackHandler.handle вызывает исключение.Конструктор ContextHandlerCallback по умолчанию используется и передается в массиве обратных вызовов с обратным вызовом имени пользователя и пароля.Ниже приведен код, в котором callbackHandler представляет собой javax.security.auth.callback.CallbackHandler

callbacks = new Callback[2];
callbacks[0] = new NameCallback("username: ");
callbacks[1] = new PasswordCallback("password: ", false);  
callbacks[2] = new ContextHandlerCallback();  

callbackHandler.handle(callbacks);

. Здесь верхняя часть исключения отбрасывается в точку callbackHandler.handle(callbacks) сверху.:

javax.security.auth.callback.UnsupportedCallbackException: [Security:090175]Unrecognized Callback
at weblogic.security.SimpleCallbackHandler.handle(SimpleCallbackHandler.java:71)
at com.bea.common.security.internal.service.CallbackHandlerWrapper.handle(CallbackHandlerWrapper.java:76)
at weblogic.security.service.internal.WLSJAASLoginServiceImpl$CallbackHandlerWrapper.handle(WLSJAASLoginServiceImpl.java:156)
at javax.security.auth.login.LoginContext$SecureCallbackHandler$1.run(LoginContext.java:955)
at javax.security.auth.login.LoginContext$SecureCallbackHandler.handle(LoginContext.java:951)

И вот еще одна трассировка исключения, которую мы также наблюдаем:

javax.security.auth.callback.UnsupportedCallbackException: Unrecognized Callback
at weblogic.management.mbeanservers.internal.JMXAuthenticator$JMXCallbackHandler.handle(JMXAuthenticator.java:130)
at com.bea.common.security.internal.service.CallbackHandlerWrapper.handle(CallbackHandlerWrapper.java:76)
at weblogic.security.service.internal.WLSJAASLoginServiceImpl$CallbackHandlerWrapper.handle(WLSJAASLoginServiceImpl.java:156)
at javax.security.auth.login.LoginContext$SecureCallbackHandler$1.run(LoginContext.java:955)
at javax.security.auth.login.LoginContext$SecureCallbackHandler.handle(LoginContext.java:951)

Стоит отметить, что это исключение выдается, если пользователи аутентифицируются через JMX /Соединение T3, но HTTP работает просто отлично.

Часть того, что мы пытаемся достичь, - это сбор информации об аутентификации, такой как IP-адрес, с которого был получен запрос, поэтому нам нужен ContextHandlerCallback.Я вижу, что попытка получить HttpServletRequest из соединения JMX-RMI / T3 может вызвать проблемы, но возникает исключение во время javax.security.auth.callback.CallbackHandler.handle ().

Некоторая другая информация, которая может или не может быть релевантной, но почему бы не включить все, что я могу?

  • Приложение использует аутентификацию на основе форм, как и вызовы WS, но вызов JMX-RMI / T3 не может.
  • Не уверен, возможно ли определить, какую реализацию использовать для CallbackHandler при аутентификации.В настоящее время мы определили пользовательский модуль LoginModule, но не пользовательский CallbackHandler.
  • Если за пределами ContextHandlerCallback есть способ получить доступ к IP-адресу вызывающего абонента внутри модуля LoginModule, это обеспечит подходящий обходной путь.1030 *

Я запутался, почему он будет работать по одному протоколу, а не по другому.Кто-нибудь еще видел такое поведение или знает способ справиться с этим?

Спасибо, Тодд

1 Ответ

0 голосов
/ 14 октября 2013

В WebLogic ContextHandlerCallback определяется только для запросов сервлетов HTTP.

Вы можете получить доступ к IP-адресу вызывающей стороны по всем протоколам (HTTP, RMI-IIOP, ...), реализовав ConnectionFilter / ConnectionEvent интерфейсы.Вы можете использовать их для регистрации или отклонения запросов на основе IP-адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...