我已经实现了对 SAML SSO 的支持,让我的应用程序使用 Spring Security SAML Extension 作为服务提供者。我能够将我的 SP 与不同的 IDP 集成。例如,我有HostA、HostB 和 HostC,所有这些都有我的应用程序的不同实例。我为每个主机指定了一个 SP 元数据文件,并将 AssertionConsumerServiceURL 设置为该主机的 URL(EX:https:HostA.com/myapp/saml/sso)。我将每个元数据文件添加到 IDP 并测试了所有这些文件,它工作正常。
但是,我的项目还通过为负载平衡配置 IBM HTTP Server 来支持高可用性。因此在这种情况下,HTTP 服务器会将主机(A、B、C)配置为用于负载平衡的主机,用户将使用 HTTP 服务器的 URL 访问我的应用程序:https:httpserver.com/myapp/
如果我定义了一个 SP 元数据文件并在 AssertionConsumerServiceURL( https://httpserver.com/saml/sso )中指定了 HTTP 服务器的 URL,并更改了我的实现以接受针对我的 HTTP 服务器的断言,结果会是什么这种情况:
- 用户访问将用户分派到 HostA 的 HTTPServer(幕后)
- 我在 HostA 中的 SP 应用程序向 IDP 发送身份验证请求。
- IDP 将响应发送回我的 httpserver: https://httpserver.com/saml/sso 。
HTTP 服务器是否会重定向到 HostA,使其如下所示: https ://HostA.com/saml/sso
谢谢。