2017-02-18 23 views
0

Websphere Liberty Profile 16.0.0.2でSpringアプリケーションを実行しています。ログインに成功すると、要求ヘッダーにJESというJSESSIONID Cookieが表示されます。セッションを無効にして新しいセッションを作成します。次のリクエストには、セッションの無効化後に期待どおりの新しいものではなく、同じJSESSIONID Cookie値(J1)が含まれています。JSESSIONIDは、セッションの無効化後にWebsphere Liberty Profileによって再利用されます。

いくつかの調査の後、server.xmlで次のセッション管理設定を試しました。

<httpSession idLength="28" invalidateOnUnauthorizedSessionRequestException="true" cookieSecure="true" useInvalidatedId="false"></httpSession> 

でも、動作は同じです。

興味深いことに、Tomcat 8に同じWebアプリケーションをデプロイすると、期待通りに異なるJSESSIONIDクッキー値が表示されます。 WLPでは何かもっと頑固です。提案してください。

答えて

0

クライアントでJSESSIONIDクッキーを指定できます。これが意図されていない場合は、ブラウザから保存またはキャッシュされたCookieが原因である可能性があります。クライアント側からクッキーをクリアしてみてください。

Request.getRequestedSessionId()ことができ、それを検証する必要があります。私は、フォームのログインとログアウトを含むのWebSphereリバティ・サーバ上で実行されているWebアプリケーションのためのJSESSIONID振る舞いを探してみました

https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletRequest.html#getRequestedSessionId%28%29

0

1)ログインページが表示されたときに、JSESSIONIDのクッキーが存在していたとします.J1のIDを使用します。有効なユーザー/パスワードでログインした後、JSESSIONIDは期待どおりにJ1のままです。

2)次に、logout(ibm_security_logout)というフォームを作成しました。このログアウトは、次のように実装されています。ログアウト後、JSESSIONSIDの値がJ2に変更されていることがわかりました。だから私はJSESSIONIDが無効にされ、新しいものが作成されているのを見ました。

https://www.ibm.com/support/knowledgecenter/SS7K4U_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/tsec_pofolo.html

唯一の違いは、私たちはセッションを無効にする方法可能性があり、当社のシナリオの間で参照してください。次回別のユーザーとしてログインできますか?セッションが無効化されなかった場合、異なるユーザ(例えばuser2)としてログインすると、セッションは以前のユーザ(例えばuser1)によって所有されているので、例外が発生する。

0

httpSessionでidReuseをfalseに設定してみてください。

関連する問題