如何将登录用户的会话数据传输到另一个Java应用程序

时间:2014-11-25 07:56:40

标签: java spring spring-mvc tomcat

我有一个遗留应用程序。登录系统非常简单,就像从用户那里获取用户名/密码并运行数据库查询并验证用户。现在,我已经在遗留的Java应用程序中创建了一个链接,该链接登陆到一个完全独立的Java应用程序仪表板页面(用Spring MVC)。到目前为止,新的spring应用程序作为完全独立的应用程序而没有用户验证。我希望有人点击链接(他只能在登录遗留应用程序后访问链接),它会重定向到新应用程序以及用户会话数据。这样用户也会看到自己登录到新应用程序。如果他从新应用程序注销,我也希望他从遗留应用程序中退出。

传统应用程序 - 基于servlet jsp的简单java应用程序,运行在tomcat 5.5上 新应用程序 - 在Spring MVC 4中编写并在tomcat 6上运行

两个tomcat容器都位于同一个红帽子盒上。

任何帮助都将受到高度赞赏。谢谢

2 个答案:

答案 0 :(得分:1)

您可以尝试为遗留应用程序开发AuthenticationSuccessHandler,并在成功时将两个应用程序之间的共享内存中的Autentication设置为SecurityContext。注销时,销毁对象。

对于新应用程序,开发一个过滤器或处理程序,用于请求检查以查看与请求中的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服务进行尝试登录,并使用答案决定是否登录用户。这样,您只有一个会话(在新应用程序上),您可以更轻松地扩展旧应用程序(如果需要,不会被其他限制阻止)。

这只是一个意见,没有更详细的了解你的应用程序,它可能证明是有用的或完全垃圾:)

答案 1 :(得分:0)

让我们说你已经在服务器A上连接了。在服务器B上,你有了你的Spring MVC应用程序。

您应该在服务器B上开发一个创建安全令牌的Web服务,并使用symectric算法对其进行加密。将令牌发送到服务器A. 然后,服务器A调用服务器B上使用令牌进行身份验证的其他Web服务。 当您使用令牌登录服务器时,A可以对其进行解密,以验证它是先前发布的。

您可以在网络上找到各种文档和examples,以进行基于令牌的身份验证。