负载均衡器后面的多个 Spring Boot App 实例 运行 是否应该与 spring CAS 用户身份验证一起使用?
Should multiple Spring Boot App instances running behind a load balancer work with spring CAS user authentication?
我有一个 Spring 我正在处理的启动应用程序,它使用 CAS 身份验证。我的 CAS 工作正常,但是一旦我在负载均衡器后面启动了 1 个以上的应用程序副本,该应用程序就无法进行身份验证。
该应用程序将用户带到 CAS 并 returns 到主页,一旦通过身份验证,用户应该会看到主界面。但是,当它来自 CAS returns 时,spring 安全认证检查仍然认为用户未通过认证。
如果我将实例数减少到 1,它会再次开始正常工作。
我 运行 这个应用程序在 F5 负载平衡器后面,所以我想弄清楚 F5 上是否缺少某些配置,或者我的应用程序是否需要做一些事情来处理从一台服务器切换到另一台服务器等。我认为这是导致问题的原因,但我想保持我的应用程序无状态,而不是依赖于为给定用户设置 F5 粘性。实际上,我什至尝试在 F5 上设置该功能,但仍然得到相同的行为,所以不确定超过 1 个应用程序实例时真正发生的是 运行。
我的理解是这应该可以正常工作,因为我配置了 server.use-forward-headers=true。
我是否遗漏了一些其他 CAS、Spring 启动服务器或 Spring 启动安全设置,这些设置是实现此功能所必需的吗?
这应该与 CAS 身份验证一起使用吗?
我正在使用 Spring Book 2.0.4.RELEASE
我正在使用 spring-security-cas-client 3.0.8.RELEASE
我认为问题出在多个 cas 服务器集群上。当您的 spring 引导应用程序正在寻找有效票据时,它无法通过身份验证。
CAS 支持此类情况,请尝试阅读下面的 link
https://apereo.github.io/cas/5.2.x/installation/Hazelcast-Ticket-Registry.html
如果上述解决方案有效,您必须为支持添加依赖项并更新 属性 文件
希望这有帮助
如果您使用 OAuth / SAML / Delegated 身份验证,那么您可能需要将您的 F5 负载平衡器(或任何负载平衡器)设置为启用“会话持久性”,以便 CAS 服务器正常运行。
我找到了这个问题的解决方案。 Spring 引导安全性似乎默认为基于会话的安全性,因此您需要实施自己的无状态安全性才能以无状态方式运行。
多亏了这个博客 post 和博客 post 作者的一些额外帮助,我才能够在 Spring 引导 2.x[=11 中完美地运行它=]
查看 post,它很有趣并且运行良好。
https://www.dedicatedcode.com/posts/stateless-authentication/
感谢其他提供答案的人,他们让我朝着正确的方向找到了这个解决方案。
我有一个 Spring 我正在处理的启动应用程序,它使用 CAS 身份验证。我的 CAS 工作正常,但是一旦我在负载均衡器后面启动了 1 个以上的应用程序副本,该应用程序就无法进行身份验证。
该应用程序将用户带到 CAS 并 returns 到主页,一旦通过身份验证,用户应该会看到主界面。但是,当它来自 CAS returns 时,spring 安全认证检查仍然认为用户未通过认证。
如果我将实例数减少到 1,它会再次开始正常工作。
我 运行 这个应用程序在 F5 负载平衡器后面,所以我想弄清楚 F5 上是否缺少某些配置,或者我的应用程序是否需要做一些事情来处理从一台服务器切换到另一台服务器等。我认为这是导致问题的原因,但我想保持我的应用程序无状态,而不是依赖于为给定用户设置 F5 粘性。实际上,我什至尝试在 F5 上设置该功能,但仍然得到相同的行为,所以不确定超过 1 个应用程序实例时真正发生的是 运行。
我的理解是这应该可以正常工作,因为我配置了 server.use-forward-headers=true。
我是否遗漏了一些其他 CAS、Spring 启动服务器或 Spring 启动安全设置,这些设置是实现此功能所必需的吗?
这应该与 CAS 身份验证一起使用吗?
我正在使用 Spring Book 2.0.4.RELEASE 我正在使用 spring-security-cas-client 3.0.8.RELEASE
我认为问题出在多个 cas 服务器集群上。当您的 spring 引导应用程序正在寻找有效票据时,它无法通过身份验证。 CAS 支持此类情况,请尝试阅读下面的 link
https://apereo.github.io/cas/5.2.x/installation/Hazelcast-Ticket-Registry.html
如果上述解决方案有效,您必须为支持添加依赖项并更新 属性 文件 希望这有帮助
如果您使用 OAuth / SAML / Delegated 身份验证,那么您可能需要将您的 F5 负载平衡器(或任何负载平衡器)设置为启用“会话持久性”,以便 CAS 服务器正常运行。
我找到了这个问题的解决方案。 Spring 引导安全性似乎默认为基于会话的安全性,因此您需要实施自己的无状态安全性才能以无状态方式运行。
多亏了这个博客 post 和博客 post 作者的一些额外帮助,我才能够在 Spring 引导 2.x[=11 中完美地运行它=]
查看 post,它很有趣并且运行良好。
https://www.dedicatedcode.com/posts/stateless-authentication/
感谢其他提供答案的人,他们让我朝着正确的方向找到了这个解决方案。