web-dev-qa-db-ja.com

Websphere JSESSIONID Cookieは、同じドメイン(異なるポート/コンテキストルート)上の2つのアプリ間で上書きされます

背景

2つのwebshpereアプリがあります

(2つの個別のプロファイルにインストールされ、ポートとコンテキストルートの両方が異なる)

シナリオ

  • App1にログインすると、ユーザーはJSESSIONID Cookie Xを取得します
  • 別のブラウザータブ(IE8)でapp2にログインすると、ユーザーはJESSSIONID cookieを取得しますY

問題

  • App2にログインすると、JSESSIONID Cookieの値Yが値Xを上書きするため、app1のセッションが無効になります(ユーザーが何かを実行すると、ログインページに戻ります)

質問

  • これはデフォルトの動作ですか? 2つのWebアプリがJSESSIONID Cookieを共有できるのは奇妙に見える
  • JSESSIONID Cookie分離を使用するように2つのWebアプリを構成する方法はありますか?
4
Eran Medan

アプリケーション固有のcookie pathを設定して、Cookieが送信されるURLを制限する必要があるかもしれません。

これは、Override session management in Enterprise Applications > AppName > Session managementを選択し、Enable cookies > Cookie path > Set cookie pathは、アプリケーションのコンテキストルートに等しくなります。 app1またはapp2と等しい。

私の意見では、これは同じホストで実行されているアプリからCookieを分離するための最も好ましい方法です。

2
trikelef

これらの2つのアプリは、別々のプロファイルにあるため、お互いを認識していません。したがって、2番目のセッションには認識できないセッションIDが表示され、それが期限切れのセッションIDであると想定して、新しいセッションIDを作成することを期待しています。

アプリケーションのCookie名の1つをJSESSIONID以外の名前に変更するか、/ app1または/ app2にのみ送信されるようにパスを変更できます。

Serversの下のサーバー全体>サーバー名> Session Management> Enable CookiesまたはEnterprise Applications>アプリケーション名> Session Management>の下の特定のアプリケーションEnable Cookies。後者を選択する場合は、Override session managementも確認する必要があります。

2
dbreaux

Cookie名を変更したり、パスコンポーネントを追加したりするための代替(AIUI、推奨?)ソリューションがあります。両方のアプリケーションを構成して、着信セッションIDを再利用し、作成したセッションをベースにすることができます。

http://www-01.ibm.com/support/docview.wss?uid=swg21210881

2
covener

私の環境でも同じ問題がありました。両方のアプリケーションでCookieパスを変更したにもかかわらず、1つのアプリケーションCookieパスのみを変更し、オーバーライドセッション管理を有効にしました。変更後に問題が解決しました。

0