我正在使用 spring security 为 Web 应用程序设计一个安全模块。有 3 个单独的战争(3 个应用程序)使用单独的登录,部署在 JBOSS 服务器中。要求是,如果用户在一个应用程序中通过身份验证,那么他应该能够在不登录的情况下访问其他应用程序。是否可以在 Web 应用程序之间共享安全上下文(不同的战争不在一个 EAR 中)。我们讨论了 SSO,但我们正试图通过 spring 安全性和应用服务器的支持来实现这一点。有什么办法吗?请提供您宝贵的建议和意见。如果您需要更多信息,请告诉我。
问问题
137 次
2 回答
0
最简单的方法是使用通常的 Spring Security 身份验证(例如基于表单的用户名/密码)并启用remember-me 功能。
只要所有三个应用程序都部署在同一个域上(因此可以共享它们的 cookie),remember-me 功能就可以无缝地为所有应用程序工作,即一旦用户在任何应用程序上进行身份验证,她就可以访问其他无需重新认证。
这当然不能解决单次注销之类的问题,但这似乎不是您的目标。
您可以在短时间内进行设置,并且不需要第三方 SSO 组件。尽管基于标准 SSO 协议和专用技术的中继往往是更安全的选择。
于 2014-04-28T08:40:32.573 回答
0
我最近使用 SSO 和 Spring Security 完成了这项工作,但是我编写了自己的安全过滤器来使用它来获取 SPNEGO 过滤器提供的 HttpServletRequest.getRemoteUser() 值。SSO 的一件事:大多数机制使用仅在本地桌面环境中真正有效的 Kerberos。可以编写一个回退机制,将用户重定向到登录页面,但你仍然有你的问题。
另一种选择是将您的应用程序重新打包为 EAR(请参阅此处)。
于 2014-04-27T08:20:49.567 回答