2015-06-22 51 views
1

是否可以分发“loginContexts”(就像是一个短暂的会话,所以第一个请求中的一些信息在下一个请求中仍然可用,直到登录成功 - cookie为“_idp_authn_lc_key “)集群内?集群上的Shibboleth IDP

我们使用Redis通过覆盖Shibboleth的StorageService来存储会话信息。许多论坛回答说,只有在粘性会话和loginContext存储在本地的情况下才有可能。

有没有办法在不使用粘性会话的情况下保存群集上的loginContext。目前我们正在获取“没有登录上下文可用”的错误之一的tomcat。

我们的请求流是 - Akamai的 - 阿帕奇服务器(集群) - Tomcat服务器(集群)

注:_idp_session饼干(这是一个长期存在的会话)工作正常,

回答

0

这是正确的。登录上下文通过API存储,该API不可导出到诸如EHCache,memcached或Redis之类的解决方案。你需要使用粘性会话。

用户获得的会话是可用的,这通常是在群集节点之间共享的。

...如果您的负载平衡器不支持粘性会话,您可以通过在您的IdP前使用反向代理层来查看登录上下文会话cookie,获得一些里程(非常未经测试)确定它是来自哪个节点,并在那里转发它。我想像HAProxy或Nginx可以做到这一点。与其试图解析登录上下文会话cookie,您可能会为您的第二层粘性负载均衡器执行自己的cookie插入操作。

最后,您可能还会考虑做一个高可用性群集,并使用浮动IP进行主动/被动。

很高兴听到您正在使用REDIS,因为我需要重新审视如何将我的IdP集中注销。

相关问题