如何在现有的 tomcat Web 应用程序上实现单点登录

2022-09-02 09:58:32

我有一个tomcat 7设置,上面部署了oldApp.war和newApp.war。这两个应用程序为数据库上的用户共享相同的登录凭据。

我可以分别使用 和 访问应用程序。https://localhost/oldApphttps:localhost/newApp

我的旧应用程序是一个Spring MVC java应用程序,当用户登录到旧应用程序时,我希望有一个链接,该链接将使用户进入newApp而无需询问登录凭据。

我想知道如何实现SSO来做到这一点。我最好不想运行任何外部服务来处理这个问题。

提前致谢。


答案 1

更新:它的2018年,以下信息已过时。如果您要启动新应用程序,请使用 Open ID Connect 等联合身份协议,您将免费获得 SSO。

您可以采取以下几种方法:

  1. 您可以使用 Tomcat 进行身份验证,并使用 Tomcat 的单点登录功能。如果您当前正在使用Spring对用户进行身份验证,则可能需要更改一些内容。此外,根据您进行身份验证的方式,Tomcat的身份验证可能不够可配置。
  2. 您可以设置第三个,CAS,servlet(或类似的东西),两个Web应用程序都对其进行身份验证。
  3. 您可以使用Spring和预先认证的过滤器自行设置。您基本上必须编写自己的预身份验证过滤器,该过滤器检查两个 Servlet 都可以访问的某个位置(数据库?,共享上下文?)以获取现有凭据,然后再回退到旧的身份验证方法。您需要确保在某个位置的筛选器中清除此身份验证,以便下一个请求不会自动继承以前的请求凭据。

答案 2

您可以通过多种不同的方式实现 SSO:

  1. 奥思 2 - http://oauth.net/2/
  2. 萨姆 2 - https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security

SAML 2.0 具有许多针对身份/服务提供商角色的实现。

对于 IDP 实现列表,我可以向您指出此堆栈溢出帖子:https://stackoverflow.com/a/761774/126414

如果你打算实施一个服务提供商,有一个很好的弹簧扩展:http://static.springsource.org/spring-security/site/extensions/saml/index.html


推荐