2010-12-02 9 views
1

私が使用しているWeblogic 10.3にカスタム認証プロバイダがあり、問題があります。JMX-RMI/T3接続により、CallbackHandlerがContextHandlerCallbackで例外をスローします。

ユーザーがHTTP経由で接続して認証すると、すべて正常に機能します。ただし、接続がJMX-RMI/T3接続の場合は、javax.security.auth.callback.CallbackHandler.handleへの呼び出しがスローされます。 ContextHandlerCallbackデフォルトのコンストラクタが使用され、ユーザ名とパスワードのコールバックを使用してコールバックの配列に渡されます。

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) 

そして、ここで私たちがしている別の例外トレースです:下記のた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); 

でコードがexcetptionの上部には、上からcallbackHandler.handle(callbacks)のポイントにスローされています同様に見て:

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が必要です。 JMX-RMI/T3接続からHttpServletRequestを取得しようとすると問題が発生する可能性がありますが、javax.security.auth.callback.CallbackHandler.handle()の間に例外がスローされています。

関連性があるかもしれないし、そうでないかもしれない情報がいくつかありますが、私はそれをすべて含んでいませんか?

  • アプリケーションではWSコールと同じようにフォームベース認証が使用されていますが、JMX-RMI/T3コールではそうではありません。
  • 認証時にCallbackHandlerに使用する実装を定義できるかどうか不明です。現在、カスタムLoginModuleを定義していますが、カスタムCallbackHandlerは定義していません。
  • ContextHandlerCallbackの外に、LoginModule内の呼び出し元のIPアドレスにアクセスする方法がある場合は、適切な回避策が提供されます。

私はそれが1つのプロトコルで動作し、他のプロトコルでは動作しない理由が混乱しています。誰もこの種の行動を見たり、これを処理する方法を知っていますか?

おかげでは、WebLogicで トッド

+0

私はコードと例外スタックトレースを見ることができましたか? –

+0

コードセクションとリンクが追加されました。最初から省略して申し訳ありません。見ていただきありがとうございます。 –

答えて

0

は、ContextHandlerCallbackだけHTTPサーブレット要求のために定義されています。

ConnectionFilter/ConnectionEventインターフェイスを実装することによって、すべてのプロトコル(HTTP、RMI-IIOP、...)で発信者のIPアドレスにアクセスできます。これらを使用して、IPアドレスに基づいて要求をログまたは拒否することができます。

関連する問題