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

如何将登录用户的会话数据传输到另一个Java应用程序,java,spring,spring-mvc,tomcat,Java,Spring,Spring Mvc,Tomcat,我有一个遗留应用程序。登录系统非常简单,它从用户那里获取用户名/密码,运行数据库查询并验证用户。现在,我在遗留java应用程序中创建了一个链接,链接到一个完全独立的java应用程序仪表板页面(用Spring MVC编写)。到目前为止,新的spring应用程序是完全独立的应用程序,没有实现用户验证。我想要的是,如果有人单击链接(他只能在登录到遗留应用程序后访问该链接),它将重定向到新应用程序以及用户会话数据。因此,用户还可以看到自己登录到新的应用程序。如果他从新应用程序中注销,我希望他也从旧应用程

我有一个遗留应用程序。登录系统非常简单,它从用户那里获取用户名/密码,运行数据库查询并验证用户。现在,我在遗留java应用程序中创建了一个链接,链接到一个完全独立的java应用程序仪表板页面(用Spring MVC编写)。到目前为止,新的spring应用程序是完全独立的应用程序,没有实现用户验证。我想要的是,如果有人单击链接(他只能在登录到遗留应用程序后访问该链接),它将重定向到新应用程序以及用户会话数据。因此,用户还可以看到自己登录到新的应用程序。如果他从新应用程序中注销,我希望他也从旧应用程序中注销

遗留应用程序-基于jsp的简单servlet java应用程序,在Tomcat5.5上运行 新的应用程序-用SpringMVC4编写并在Tomcat6上运行

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


我们将非常感谢您的帮助。谢谢

您可以尝试为旧版应用程序开发AuthenticationSuccessHandler,并在成功时让它在两个应用程序之间的共享内存中设置SecurityContext的自动验证。注销时,销毁该对象

对于新的应用程序,开发一个过滤器或处理程序,用于检查请求的共享内存中是否存在与来自请求的SESSIONID相关联的授权。如果它不再存在,强制spring破坏此会话,将您注销

AuthenticationSuccessHandler:

安全内容:

共享内存:

当然,这只是两个应用程序之间的一个脆弱链接,也许您应该考虑以最符合CAS目的的方式重新开发遗留应用程序,例如公开Web服务进行登录,让新应用程序的登录处理程序调用webservice进行尝试登录,并使用答案决定是否登录用户。这样,您只有一个会话(在新应用程序上),可以更轻松地扩展旧应用程序(如果需要并且不受其他限制)


这只是一个机会,如果没有对您的应用程序进行更详细的研究,它可能会被证明是有用的或完全是垃圾:)

假设您的应用程序连接到服务器a上。在服务器B上,您有您的Spring MVC应用程序

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


您可以在web上找到各种文档和基于令牌的身份验证。

您应该在这里展示您所做的工作……感谢您的回复,但我还没有尝试您的解决方案。我会让你知道的。再次非常感谢。嗨,阿德里安和阿兰。。只是一个问题。看起来我不能或者不应该在遗留应用程序中更改任何内容,因为这个自动会话传输的解决方案不是永久性的解决方案。我在想一个主意,如果我可以传输URL中的会话数据,对整个URL进行加密,然后在spring应用程序中接收加密数据并解密URL以获得会话数据,该怎么办。可能吗?如果是这样。。你能指导我怎么做吗?在我看来,这可能是解决我的具体问题的一个更简单的方法。再次感谢您的帮助。感谢您的回复,但我还没有尝试您的解决方案。我会让你知道的。再次非常感谢。