我们使用ITfoxtec.Identity.Saml2库来验证我们的SSO服务。
问题是我们在负载平衡的服务器上使用它。如果我们关闭粘性会话,应用程序将不再起作用。
我在创建会话时尝试设置isPersistent = true但它没有任何影响。我已经看到了与在Web场中存储SAML状态相关的类似问题,其建议范围包括:
更改配置,以便webfarm上的所有服务器使用相同的计算机密钥创建相当于状态服务的内容以存储身份验证。
我认为有一种方法可以在cookie中本地存储用户状态,无论是否使用负载平衡,都可以重用。
关于如何攻击这个的任何建议?
使用ITfoxtec.Identity.Saml2.Mvc和ASP.NET MVC,isPersitent
是CreateSession
方法的参数。在CreateSession使用的ASP.NET sample application方法。
在接受SAML 2.0响应以创建由SessionAuthenticationModule
处理的用户身份cookie之后调用该方法。
默认情况下,用户身份cookie不是持久的。设置isPersitent=true
会导致创建持久的用户身份cookie。 isPersitent
设置与负载平衡无关。
应该可以通过设置isReferenceMode=true
来支持负载平衡。引用模式将用户身份cookie从自包含更改为指针。
在参考模式中,在序列化期间产生简单的工件,并且令牌材料存储在与令牌处理程序相关联的令牌缓存中。令牌缓存是从SessionSecurityTokenCache派生的类的实例。对于Web场方案,令牌缓存必须在服务器场中的所有节点上运行。
也许你需要实现一个令牌缓存。
更新:
我很遗憾地说我没有例子。我已经添加了一些可能有用的链接。