繁体   English   中英

在不同的Tomcat中具有2个spring应用程序的SSO

[英]SSO with 2 spring applications in different Tomcats

我被要求将我们的网络应用程序集成到第三方网络应用程序中

  • 两者具有相同的Spring安全性配置
  • 入口点将始终是第三方网络应用
  • 除非有更好的SSO方法,否则将通过IFrame进行集成

因此,如果根据我所知,两个Web应用程序都在同一个Tomcat实例中,则可以启用SSO小部件,并且可以跨Web应用程序获取SSO,但是由于多种原因,我们在自己的Tomcat服务器中运行Web应用程序。

我之前曾使用Jasig CAS来管理SSO服务,但是由于主要的Web应用不是由我们设计或维护的,并且只有一个切入点,因此,我正在寻找一种侵入性较小的方法来管理整个服务的身份验证。

Cookie是否足以满足我的需求?

考虑一下之后,我可以看到3种主要可能性:

  • 在两个应用程序上将身份验证移至CAS。 优点:经过验证的强大解决方案, CasAuthenticationProvider可以使用现有的AuthenticationUserDetailsService加载角色,将允许在基于此cas服务器的任何应用程序上进行首次身份验证(即使不是当前要求)-缺点:可能仅用于2个应用程序的配置繁重
  • 使用第一个应用程序的会话cookie作为参考。 如果您可以设法在第二个应用程序上获取它,则可以使用自定义的预身份验证过滤器,该过滤器获取Cookie并从第一个应用程序询问userId。 优点:如果有一个页面可以在第一个应用程序中获取userId(用户名或...),则无需更改-缺点:在制作两个应用程序之前,您可能必须放置一个通用的反向代理他们似乎来自同一台服务器,以便能够在第二个应用程序中获取cookie,看起来像是在中间攻击中的人,可能需要第二个应用程序的自定义会话cookie
  • 在第一个应用上添加一个自定义过滤器,以设置包含令牌的自定义Cookie,第二个应用可以对其进行检索。 提交令牌后,过滤器还应拦截网址并发送回userId。 然后在第二个应用程序上添加一个自定义的预认证过滤器,该过滤器仅获取此令牌并要求userId进行第一个过滤器。 优点:在第一个应用程序中添加了一个简单的过滤器,与其余应用程序之间几乎没有交互,看起来相当简单且健壮-缺点:由于这两个应用程序都经过大量测试,因此两个应用程序都需要自定义过滤器

我建议您考虑第一种或第三种解决方案,即使它们需要在第三者应用程序上对Spring安全性进行一些修改,因为第二种听起来确实很脏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM