我有一个在 Spring 1.0 上运行的遗留应用程序,在 JBoss 4 上具有 Acegi 安全性。我们的计划是将应用程序的一个子集迁移到 Tomacat 7 和 Spring 4。用户将登录到遗留应用程序,但如果他们想导航到正在迁移的子集,它们将被重定向到新应用程序。
我的问题是如何维护两者之间的 session 信息,以便用户可以在两个应用程序之间无缝导航并维护 SSO。两台服务器之间不会交换其他信息。我们的一个限制是我们必须对现有的遗留应用程序进行最少的更改。
任何帮助将不胜感激。
最佳答案
据我所知,您无法无缝地维护 session 信息。
通过将 JBoss 和 Tomcat 配置为集群,您可能会非常幸运 using Tomcat's clustering (并假设 JBoss 附带的 Tomcat 版本与您运行的独立 Tomcat 兼容),然后 enabling SSO在 JBoss 和 Tomcat 上,但是您必须非常小心,不要在 JBoss session 中放置任何独立 Tomcat 实例无法加载的内容。
您可能最好实现一些其他解决方案,例如使用可能不那么脆弱的 SAML。
你说你不想做太多的改变,但如果你愿意亲自动手,你可以在网络应用程序之间使用共享的 URL 空间,使用不同的 session ID cookie,然后交叉 -通过调用“其他”服务器以获取他们的身份验证信息(您必须以某种方式在 session 中提供这些信息)来检查未经身份验证的用户的传入请求。我建议不要在用户的 session 中存储密码。而是允许一个应用程序从第一个使用 session cookie 获取另一个应用程序中的用户的用户名。相信用户名是准确的,并且用户已经在第一个应用程序中得到正确的身份验证,然后执行自动登录到第二个应用程序。
无论你做什么,它都会变得困惑,因为你的需求相当困惑。
关于java - 跨两个应用服务器管理 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154240/