1

我正在尝试跨多个服务器和子域设置表单身份验证,但我发现它适用于我们的某些盒子而不是其他盒子的问题。我们将 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 为真,并且 Forms Authentication 用户名已解密,但是在其他不起作用的盒子中,我发现非表单身份验证 cookie 已正确传递并读取,但表单身份验证 cookie 已通过(我可以通过 Firebug 看到),但第二个站点无法解密它,因此 isAuthenicated 为 False。

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

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

具有相同问题但不起作用的类似文章

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

4

1 回答 1

2

更新

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

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

于 2012-07-25T10:49:55.760 回答