我有一个正在使用CAS身份验证的Spring Boot应用程序。我的CAS工作正常,但是一旦在负载均衡器后面启动了多个应用程序副本,该应用程序便无法通过身份验证。
该应用程序将用户带到CAS并返回主页,一旦通过身份验证,用户应会看到主界面。但是相反,当它从CAS返回时,spring安全性已验证的检查仍然认为用户未被验证。
如果我将实例减少到1个,它将再次开始正常工作。
我正在F5负载均衡器后面运行此应用程序,因此我试图弄清楚F5上是否缺少某些配置,或者我是否需要在我的应用程序中做一些事情来处理从一台服务器到服务器的切换。我认为这是造成此问题的原因,但我想让我的应用保持无状态,并且不依赖于使F5对给定用户具有粘性。实际上,我什至尝试在F5上设置该功能,但仍然会得到相同的行为,因此无法确定一旦运行了多个应用程序实例,实际发生了什么。
我的理解是,这应该可行,因为我已经配置了server.use-forward-headers = true。
我是否缺少一些其他的CAS,Spring Boot Server或Spring Boot Security设置,这些设置是这项工作所必需的?
这应该与CAS验证一起使用吗?
我正在使用Spring Book 2.0.4.RELEASE 我正在使用spring-security-cas-client 3.0.8.RELEASE
答案 0 :(得分:1)
我找到了解决此问题的方法。看来Spring Boot Security默认使用基于会话的安全性,因此您需要实现自己的无状态安全性才能使其以无状态方式工作。
感谢这篇博客文章以及博客作者的一些附加帮助,我能够在Spring Boot 2.x中使它完美运行
查看帖子,它很有趣并且效果很好。
https://www.dedicatedcode.com/posts/stateless-authentication/
感谢其他提供答案的人,这些答案使我朝正确的方向找到了解决方案。
答案 1 :(得分:0)
我认为问题出在多个cas服务器集群上。当您的Spring Boot应用程序正在寻找有效的票证时,它将无法通过身份验证。 CAS对这种情况有支持,请尝试阅读下面的链接
https://apereo.github.io/cas/5.2.x/installation/Hazelcast-Ticket-Registry.html
如果上述解决方案有效,则必须为支持添加依赖项并更新属性文件 希望这会有所帮助
答案 2 :(得分:0)
如果您正在使用 OAuth / SAML / 委托身份验证,则可能需要设置F5负载均衡器(或任何负载均衡器) )启用“ 会话持久性”,以使CAS服务器正常运行。