0

出于可用性目的,我有一个带有 2 个正面和 2 个背面的冗余设置。每个前端都托管一个 Web 服务器,提供相同的页面。每个前端运行一个 Shibboleth SP 实例,重定向到同一个 IdP。两个前端都位于负载均衡器后面,暴露了一个唯一的公共地址。负载均衡器将在 shibboleth cookie 上设置会话亲缘关系。

在第一次连接时,用户未经过身份验证,Shibboleth SP 重定向到具有中继状态的 ADFS。身份验证后,ADFS 重定向到 LB 公共地址。

问题是,还没有 shibboleth cookie。Shibboleth SP 的任一实例都可以处理重定向吗?如果没有,如何按照描述正确管理 2 个 Shibboleth SP 冗余实例?

谢谢!

4

1 回答 1

1

ADFS 将用户重定向回 LB 地址,该地址将 SAMLResponse 传递到它选择的任何节点,此时 SP(两者之一)将看到有效的 SAMLResponse 并启动 cookie。如果用户被 ping 到另一个 SP 节点,则除非两个 SP 共享一个公共会话存储(就像一个数据库一样),否则该 cookie 将不会被 SP 视为有效,并且它将再次通过 SSO。通常会话粘性将与用户的 IP 挂钩,以便他们总是(或几乎总是)被重定向到同一个 SP 实例......并且如果他们的亲和力发生变化,他们仍然会有一个有效的 IDP 会话并且不应该看到登录页。

这在很大程度上取决于您的应用程序以及它是如何构建的......请参阅:https ://wiki.shibboleth.net/confluence/display/SP3/Clustering ... TL;DR:通过利用它来避免集群SP在单个入口点上,因为它是轻量级的(有问题,但我通常会推荐),或者共享会话数据库(它有很多自己的问题)。

于 2020-06-09T19:51:32.430 回答