跨两个应用服务器管理会话

时间:2014-03-03 18:18:19

标签: java tomcat spring-security single-sign-on

我有一个在Spring 1.0上运行的遗留应用程序,在JBoss 4上运行Acegi安全性。我们的计划是将应用程序的一个子集迁移到Tomacat 7和Spring 4.用户将登录到遗留应用程序但是如果他们想要导航到正在迁移的子集,他们将被重定向到新的应用程序。

我的问题是如何在两者之间维护会话信息,以便用户可以在两个应用程序之间无缝导航并维护SSO。两台服务器之间不会交换其他信息。我们的一个限制是我们必须对现有的遗留应用程序进行最小的更改。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

就我所知,你无法无数地维护会话信息。

通过将JBoss和Tomcat配置为集群using Tomcat's clustering(并假设JBoss附带的Tomcat版本与您正在运行的独立Tomcat兼容),然后{{3},您可能会非常幸运。在JBoss和Tomcat上,但是你必须非常小心,不要在你的JBoss会话中放置任何不可由独立Tomcat实例加载的东西。

你可能会更好地实施其他一些解决方案,例如使用可能不那么脆弱的SAML。

您说您不想做太多更改,但如果您愿意弄脏,可以在Web应用程序之间使用共享的URL空间,使用不同的会话ID cookie,然后交叉 - 通过调用“其他”服务器来检查未经身份验证的用户的传入请求,以获取他们的身份验证信息(您必须以某种方式在会话中提供这些信息)。我建议不要在用户的会话中存储密码..而是允许一个应用程序使用第一个会话cookie在另一个应用程序中获取用户的用户名。相信用户名是准确的,并且用户已经在第一个应用程序中进行了正确的身份验证,然后执行自动登录到第二个应用程序。

无论你做什么,它都会变得混乱,因为你的要求相当混乱。