java - 跨两个应用服务器管理 session

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

我有一个在 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/

相关文章:

java - Java List API 实现的开源测试套件?

spring-boot - 如何在 OAuth2 资源服务器中提取自定义主体?

spring-boot - Spring CSRF保护场景?

java - 如何使用 SpringBoot Security 禁用 OPTIONS 的基本 http 身份验证

java - Android App 中的亚马逊访问凭证

java - 通过java执行mp4box命令得到错误

elasticsearch - 用户网格系统要求?

apache - 如何在 apache tomcat 中自动生成堆转储?

authentication - Tomcat FORM 身份验证 - 登录表单未作为 https 出现

java - 找不到 SpringJUnit4ClassRunner 类