2014-11-25 39 views
4

我有一個遺留應用程序。登錄系統非常簡單,就像它從用戶獲取用戶名/密碼並運行數據庫查詢並驗證用戶一樣。現在,我在該遺留Java應用程序內創建了一個鏈接,該鏈接登錄到完全獨立的Java應用程序儀表板頁面Spring MVC)。截至目前,新的Spring應用程序是完全獨立的應用程序,並且沒有用戶驗證。我希望有人點擊鏈接(他只能在登錄到舊應用程序後才能訪問鏈接),然後重定向到新的應用程序以及用戶會話數據。這樣用戶也會看到他自己登錄到新的應用程序。如果他從新應用程序註銷,我希望他也從舊應用程序註銷。我如何將登錄用戶的會話數據傳輸到另一個Java應用程序

傳統基於應用程序的簡單的servlet和jsp的Java應用程序,運行在Tomcat 5.5 新應用 - 寫在Spring MVC的4和運行在Tomcat 6

兩個tomcat的容器駐留在相同的紅色帽盒。

任何幫助將不勝感激。謝謝

+0

你應該在這裏展示你做了什麼... – 2014-11-25 08:23:20

回答

1

您可以嘗試爲遺留應用程序開發AuthenticationSuccessHandler,並讓它在兩個應用程序成功之間的共享內存中設置來自SecurityContext的Autentication。在註銷時,銷燬該對象。

對於新的應用程序,請開發一個篩選器或處理程序,以便請求檢查與請求中的SESSIONID相關聯的共享內存中是否存在授權。如果它不在那裏,強迫春天摧毀這個會話,將你註銷。

AuthenticationSuccessHandler:http://docs.spring.io/autorepo/docs/spring-security/3.1.7.RELEASE/apidocs/org/springframework/security/web/authentication/AuthenticationSuccessHandler.html

SecurityContent:http://docs.spring.io/autorepo/docs/spring-security/3.2.2.RELEASE/apidocs/org/springframework/security/core/context/SecurityContext.html

共享內存:http://hazelcast.com/

當然,這只是兩個應用程序之間的脆弱聯繫,也許你應該考慮重新開發的遺留應用程序一種最好的方式是實現CAS的目的,例如公開Web服務以進行登錄,併爲新的應用程序提供登錄處理程序,調用Web服務嘗試登錄並決定使用答案。 r是否登錄用戶。這樣,您只有一個會話(在新應用程序上),您可以更輕鬆地擴展舊應用程序(如果需要並且不受其他限制)。

這僅僅是一個oppinion並不會在您的應用程序更詳細的研究,這可能證明是有用的或總垃圾:)

+0

感謝您的回覆,但我還沒有嘗試使用您的解決方案。我會讓你知道的。再次感謝。 – Ani 2014-11-28 13:05:11

+0

嗨阿德里安和阿蘭..只是一個問題..這似乎我不能或我不應該改變遺留應用程序中的任何東西,因爲這種自動會話傳輸解決方案不會是一個永久的解決方案。我想到了一個想法,即如果我可以將URL中的會話數據傳輸到整個URL,然後在Spring應用程序中接收加密數據並解密URL以獲取會話數據,那該怎麼辦。可能嗎?如果那樣......你能指導我如何做到這一點,因爲在我看來,這可能是解決我的具體問題的一種更簡單的方法。再次感謝你的幫助。 – Ani 2014-12-02 15:12:43

0

比方說,你連接上服務器A.服務器B上,你有你的Spring MVC應用程序。

您應該在服務器B上開發一個創建Secure Token的Web服務,並使用symectric算法對其進行加密。將令牌發送到服務器A. 服務器A然後調用服務器B上使用該令牌進行身份驗證的其他web服務。 當您使用令牌登錄服務器時,A可以對其進行解密以驗證它是以前發佈的令牌。

您可以在Web上找到各種文檔和examples以獲取基於令牌的身份驗證。

+0

感謝您的回覆,但我還沒有嘗試使用您的解決方案。我會讓你知道的。再次感謝。 – Ani 2014-11-28 13:05:35

+0

好運氣;) – 2014-11-28 13:16:23

相關問題