【问题标题】:Forms Authentication Sub domain cookie passing in some servers not others表单身份验证子域 cookie 在某些服务器中传递,而不是在其他服务器中传递
【发布时间】:2012-07-22 15:13:28
【问题描述】:

我正在尝试跨多个服务器和子域设置表单身份验证,但我发现它在我们的某些机器上工作而不是在其他机器上工作的问题。我们将 2 个 cookie 从一台服务器传递到另一台服务器。一个是 Forms Authentication 加密 cookie,另一个是非加密 cookie。

我们在两个盒子上都设置了正确的键:

<authentication mode="Forms" >
  <forms name=".MSLA" protection="All" timeout="30" slidingExpiration="true" path="/"
         enableCrossAppRedirects="true" />
</authentication>
<machineKey
  decryption="AES"
  decryptionKey="CAB....."
  validation="AES"
  validationKey="A2........."
/>

我们正在设置正确的 cookie 域,例如。 .bbbb.com 作为一个站点将是http://login.bbbb.com,另一个是http://app.bbbb.com

我们正在使用 ASP.net 和 .Net 4.0

在正常工作的盒子上,我发现 isAutenticated 为真,并且表单身份验证用户名已解密,但是在其他不起作用的盒子中,我发现非表单身份验证 cookie 已正确传递并读取但是表单身份验证 cookie 已通过(我可以通过 Firebug 看到),但第二个站点无法解密它,因此 isAuthenicated 为 False。

我们使用的是 Windows server 2008 和一个月前应用的更新。

我看过这篇与我的问题类似的文章,我已经尝试过了,但这对我不起作用。

Similar Article with same issue but doesn't work

以前有人遇到过这个问题吗?我认为它必须更多是服务器设置问题而不是代码,因为我能够让它在某些服务器而不是其他服务器上工作。 是否有可能需要添加到这些服务器的功能?

【问题讨论】:

    标签: asp.net .net forms-authentication session-cookies subdomain


    【解决方案1】:

    更新

    我发现了问题所在。我们需要将所有服务器完全更新到最新的服务包。微软一定改变了他们的解密算法,而且盒子上一定有不同的更新。

    感谢 Microsoft 让每个人都了解这一变化.....

    【讨论】:

    • 这只是一个建议,但如果您要维护一个仅基于表单身份验证 cookie 的分布式身份验证机制,那么您正在寻求类似这样的问题。相反,您可以根据企业 sso 协议之一(例如 WS-Federation 或 OAuth2)投入一些精力来实现真正的身份验证机制,不受限制(如相同的子域)。有可靠的工具可以帮助您在 .NET 中实现这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多