如何在现有的tomcat Web应用程序上实现SSO

Qst*_*ker 19 java spring single-sign-on tomcat7

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

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

我的oldApp是一个Spring MVC java应用程序,当用户登录到oldApp时,我希望有一个链接,将用户带入newApp而不需要登录凭据.

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

提前致谢.

Pac*_*ace 11

更新:2018年及以下信息已过期.如果您正在启动一个新应用程序,那么使用联合身份协议(如Open ID Connect),您将免费获得SSO.

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

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


svl*_*ada 8

您可以通过多种方式实施SSO:

  1. Oauth 2 - http://oauth.net/2/
  2. SAML 2 - https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security

SAML 2.0具有许多身份/服务提供者角色的实现.

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

如果您计划实施服务提供商,那么有一个很好的Spring扩展:http: //static.springsource.org/spring-security/site/extensions/saml/index.html