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

Ani*_*Ani 5 java spring tomcat spring-mvc

我有一个遗留应用程序。登录系统非常简单,就像它从用户那里获取用户名/密码并运行数据库查询并验证用户。 Spring MVC)。截至目前,新的 spring 应用程序是完全独立的应用程序,没有在那里实现用户验证。我想要一些类似的东西,如果有人单击链接(他只能在登录到旧应用程序后访问该链接),它会与用户会话数据一起重定向到新应用程序。这样该用户也会看到自己登录到新应用程序。如果他从新应用程序注销,我希望他也从旧应用程序注销。

遗留应用程序 - 基于简单 servlet jsp 的 Java 应用程序,在 tomcat 5.5 上运行 新应用程序 - 用 Spring MVC 4 编写并在 tomcat 6 上运行

两个 tomcat 容器都位于同一个 red hat box 中。

任何帮助将不胜感激。谢谢

Adr*_* B. 1

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

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

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

安全内容: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 服务来尝试登录,并使用答案决定是否登录用户。这样,您只有一个会话(在新应用程序上),并且可以更轻松地扩展旧应用程序(如果需要并且不受其他限制阻止)。

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