1

我们正在使用 ITfoxtec.Identity.Saml2 库对我们的 SSO 服务进行身份验证。

问题是我们在负载平衡的服务器上使用它。如果我们关闭粘性会话,应用程序将不再运行。

我在创建会话时尝试设置 isPersistent= true ,但它没有任何影响。我已经看到发布了与在网络场中存储 SAML 状态相关的类似问题,建议包括:

更改配置以使 webfarm 上的所有服务器都使用相同的机器密钥 创建相当于状态服务的内容来存储身份验证。

我认为有一种方法可以将用户状态本地存储在 cookie 中,无论是否使用负载平衡,该 cookie 都可以重用。

关于如何攻击这个有什么建议吗?

4

1 回答 1

0

使用 ITfoxtec.Identity.Saml2.Mvc 和 ASP.NET MVCisPersitent是方法上的参数CreateSessionASP.NET 示例应用程序中使用的CreateSession方法 。

在接受 SAML 2.0 响应以创建由SessionAuthenticationModule.

默认情况下,用户身份 cookie 不是持久的。设置isPersitent=true创建持久用户身份 cookie 的结果。该isPersitent设置与负载平衡无关。

应该可以通过设置isReferenceMode=true. 参考模式将用户身份 cookie 从自包含更改为指针。

在引用模式中,在序列化期间会生成一个简单的工件,并且令牌材料存储在与令牌处理程序关联的令牌缓存中。令牌缓存是派生自 SessionSecurityTokenCache 的类的实例。对于 Web 场方案,令牌缓存必须在场中的所有节点上运行。

也许您需要实现令牌缓存。

更新:

很抱歉,我没有一个例子。相反,我添加了一些可能会有所帮助的链接。

WIF 和网络农场

关于 SessionAuthenticationModule IsReferenceMode

SessionSecurityTokenCache 类

于 2018-11-20T16:41:09.313 回答