0

私はweblogicを初めて使用し、jbossから一連のWebアプリケーションを移植しています。同じweblogicサーバーにデプロイする複数のwarがあります。それらはすべて、ActiveDirectoryに基づくフォームベースの認証用に構成されています。

ただし、アプリケーションからのログアウトに問題があります。実際のlogin.jspフォームを含むログインアプリケーションとして機能するアプリケーションの1つがあります。また、session.invalidate()を呼び出すログアウトサーブレットもあります。これを呼び出した後、メインアプリケーションの保護されたページにアクセスできませんが、他のアプリケーションの保護されたページにはアクセスできます。

私が読んでいることから、weblogic 11gはすべてのアプリケーションで同じセッションを共有します。これは、私が見ているものと理にかなっています。以下を使用して、すべてのアプリケーションのセッションを無効にすることへの参照を見つけました。

invalidateAll(HttpServletRequest req)

パッケージに

weblogic.servlet.security.ServletAuthentication

ただし、weblogic11gではこれまたは類似のものを見つけることができません。このユーティリティクラスはどこにありますか、またはこれをどのように行う必要がありますか?

ありがとう

アップデート:

以下のJosekの回答に基づいて、デプロイするすべてのアプリケーションのweblogic.xmlファイルに以下を追加する必要がありました。

 <session-descriptor>
     <sharing-enabled>true</sharing-enabled>
 </session-descriptor>

私が探していたjarはwls-api.jarと呼ばれ、ServletAuthenticationクラスが含まれています。zipベースの10.3.3.0バージョンのWebロジックサーバーを使用していました。WeblogicFusionインストールの一部としてのwlserver_10.3サーバーインストールのインストールでjarが見つかりました。jarファイルを取得して、NexusMavenリポジトリに追加しました。

4

1 に答える 1

2

invalidateAllはWLS10.3(別名11g)の一部として文書化されているため、ログアウトサーブレットで機能するはずです。あなたはそれを試し、何かエラーに直面しましたか?

また、session.invalidate()を呼び出すログアウトサーブレットもあります。これを呼び出した後、メインアプリケーションの保護されたページにアクセスできませんが、他のアプリケーションの保護されたページにはアクセスできます

これは、セッションがWebアプリケーション間で共有されていないことを示しています。これはデフォルトの動作です。セッションが共有されている場合、ユーザーはすべてのアプリケーションからログアウトされます。セッションを共有するには、sharing-enabled trueに設定する必要があります

ドキュメントの状態として、

デフォルトでは、Webアプリケーションは同じセッションを共有しません。Webアプリケーションで同じセッションを共有する場合は、weblogic-application.xmlデプロイメント記述子でアプリケーションレベルでセッション記述子を設定できます。Webアプリケーションが同じセッションを共有できるようにするには、セッション記述子のsharing-enabled属性をweblogic-application.xmlデプロイメント記述子でtrueに設定します。

于 2010-10-18T10:59:37.640 に答える