2014-12-06 77 views
0

我有一個web應用程序,需要輸入username and password authentication使用JSESSIONID繼續會話

我做什麼,從一個獨立的Java app,這將通過使Http要求使用usernamepassword服務器做驗證用戶。然後我會從服務器的響應中檢索JSESSIONID Cookie。

現在我想要的是使用JSESSIONID在瀏覽器上繼續會話,即讓user導航我的web應用程序的頁面,該應用程序將由我用於身份驗證的獨立java應用程序打開。

這可能嗎?或者還有其他方式可以這麼做。

回答

0

Cookie可以使用下面提到的方法進行更改。

 Cookie cookie = new Cookie("JSESSIONID", NEWSESSIONID); 
     response.addCookie(cookie); 

從您的應用程序,你可以發送JSESSIONID作爲參數,同時打開瀏覽器首次使用上面無論是在過濾器或servlet方法重置您的Cookie。一旦你發送迴應,這將重置你的cookie在客戶端。下一次請求病房,您將能夠訪問先前創建的會話。

+0

當我訪問我的網絡應用程序時,我不發送請求只需瀏覽它。 – 2014-12-07 05:40:05

+0

由於您在瀏覽您的應用程序時沒有任何細節,我們如何維護會話?認證後,您是從獨立的應用程序打開瀏覽器? – 2014-12-07 06:03:10

+0

是的,這就是我想要做的。 – 2014-12-08 05:47:05

0

這是可能的,但並不那麼簡單。

由於Web應用程序不共享會話,你要找的是一個單點登錄(SSO)解決方案,其中涉及「身份提供者」(IDM),對一個或多個「服務的用戶進行身份驗證提供者「(SP)。在這種情況下,您的servlet是IdM,而您的Web應用程序是SP。

根據您的部署,以下是第三方的開源SSO庫,你可以使用:

  • 的Kerberos
  • PicketLink(對於JBoss)
  • OpenAM(用於Tomcat)

如果您不想使用第三方庫,您也可以將您的servlet修改爲IdM。無論哪種方式,我建議在決定解決方案之前先閱讀一下安全聲明標記語言(SAML)。 SAML是上述庫實現的流行方法。