J'ai un Authenticator personnalisé dans Weblogic 10.3 que j'utilise et qui rencontre des problèmes.La connexion JMX-RMI/T3 provoque CallbackHandler à lancer une exception avec ContextHandlerCallback présent
Lorsqu'un utilisateur se connecte et s'authentifie sur HTTP, tout fonctionne correctement. Cependant, si la connexion est une connexion JMX-RMI/T3, l'appel à javax.security.auth.callback.CallbackHandler.handle
une exception est levée. Le constructeur par défaut ContextHandlerCallback
est utilisé et transmis dans le tableau des rappels avec un rappel de nom d'utilisateur et de mot de passe. Ci-dessous le code où gestionnaire de rappel est un 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);
Voici le haut de la excetption être jeté au point de callbackHandler.handle(callbacks)
d'en haut:
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)
Et voici une autre trace d'exception que nous sommes voir aussi:
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)
Il convient de noter que cette exception est levée si les utilisateurs sont authentifiés via une connexion JMX/T3 mais HTTP fonctionne très bien.
Une partie de ce que nous essayons de réaliser consiste à capturer des informations sur l'authentification, telles que l'adresse IP à l'origine de la demande, c'est pourquoi nous avons besoin du ContextHandlerCallback
. Je peux voir qu'essayer de récupérer un HttpServletRequest
à partir d'une connexion JMX-RMI/T3 pourrait causer des problèmes, mais une exception est levée pendant javax.security.auth.callback.CallbackHandler.handle().
D'autres informations qui peuvent ou peuvent ne pas être pertinentes, mais pourquoi ne pas inclure tout ce que je peux? L'application utilise l'authentification basée sur le formulaire, tout comme les appels WS, mais pas l'appel JMX-RMI/T3.
Merci, Todd
Y a-t-il une chance que nous puissions voir le code et l'exception stacktrace? –
Ajout d'une section de code et de liens. Désolé pour l'omission de commencer avec. Merci d'avoir regardé et les suggestions. –