2012-04-26 713 views

回答

3

我發現球文檔中的解決方案。

  1. 在管理控制檯中,單擊安全性>全局安全性。
  2. 在自定義屬性下,單擊新建。
  3. 在名稱字段中,輸入com.ibm.ws.security.web.logoutOnHTTPSessionExpire。
  4. 在Values字段中輸入true。
  5. 單擊應用並保存將更改保存到您的配置。
  6. 重新同步並重新啓動服務器。
2

要記住的關鍵是有效/無效HTTPSession與安全不一樣。

它們完全不同。

一旦您通過服務器驗證,您仍可以讓應用程序無需任何HTTPSession工作,如果你想。

一旦你被服務器認證,你會得到一個返回給你的瀏覽器的LTPA令牌,並且LTPA令牌被激活2小時(這是默認值)。

如果您的HTTP會話過期,不影響LTPA令牌,如果你不想做任何額外的事情。

您可以試試:ibm_security_logout會使LTPA令牌失效。

我想用更高版本的Servlet API,我們確實有一個適當的註銷操作可用,這將消除這種需要。

HTH

Manglu

3

除了Vadim提供的解決方案之外,我想分享兩個鏈接,它們描述了幾種替代解決方法,並解釋了造成這種看似相反的直觀操作模式的機制。

如果您在不同的應用程序之間使用SSO(單點登錄),那麼使用com.ibm.ws.security.web.logoutOnHTTPSessionExpire = true設置可能有一點缺點。該設置實質上使LTPA令牌無效。由於服務器上的安全緩存在超時時從LTPA令牌刷新,因此無效的LTPA將導致用戶對其餘應用程序的重新驗證(登錄)[1]。

在[2]中對問題9(與我們的問題似乎相同)的回答爲此問題的兩種替代解決方法提供了思路,您可以使用基於生命期和不活動狀態的servlet過濾器超時進行身份驗證。

[1]:Security Cache, LTPA Token, and Session Time Outs(需要登錄)

[2]:Q & A: Frequently asked questions about WebSphere Application Server security