日期:2014-05-17  浏览次数:20475 次

Forms认证,多站点单点登录失败,求助
本帖最后由 gesenkof99 于 2013-03-18 18:15:29 编辑
在同一个局域网,在不同操作系统的多台机器上,有Win03,Win08,Win2012
分别搭建了一个网站,例如5个站采用相同发布后的代码(代码中只有Form登录和登出功能),相同的Web.Config配置,IIS配置均为.net Framework4.0,Web.Config配置如下:

<authentication mode="Forms">
    <forms cookieless="UseCookies" loginUrl="~/Account/Login" name=".ASPXFORMSAUTH" protection="All" path="/" domain="testsite.web" timeout="30" />
</authentication>
<machineKey validationKey="E371591BF830E3C5CF8BDB7AC61120B0C5BE0D619F43061D7DC941D3CCE8D56F" decryptionKey="5A9ACF1DD209E5EFBE2EE1121F5817D950AB0F4F35F7A4CBB6F7E96899327CDB" validation="SHA1" decryption="3DES" />


通过一台机器本地修改hosts,test1.testsite.web 到 test5.testsite.web 分别指向这5台机器,访问这5台机器,选任意一台单独登录和登出功能均正常,但只有部分机器可以同步登录和登出状态(而且是固定的,也尝试更换过machineKey,和validation,decryption参数的不同形式,结果相同),查看cookie均是在同一个域,每个站都可以获取到cookie。

后来分析代码,但凡无法同步登录的机器,将cookie中的值尝试写死解密:

FormsAuthentication.Decrypt("3DEACEC3AE7955AEA3E27E15FB8AEEC63E0E68D6D9459420FEE344BCB3E78FE290AFEE74334E859E34A7531BA3F076632D2E47AC1947589D3C4594F69CC7EF9E64DC6CFCE59D1A359BF2975B55E355D9F151E761A0D4FD6E2E8AAA29D6222F7D2C3750D5CD13EC70599083891408733FE15DB780")

 ,会报未将对象引用设置到对象的实例

想了很多情况,网上也查不到这些资料,按照MSDN说法,主要是Web.Config中要配置相同,我也尽可能确保在最简单的情况下测试,但仍然没办法同步登录和登出,求助各位大侠,我是否还忽略了什么,或者有什么好的解决方案?
forms authentication iis domain validation

------解决方案--------------------
不好意思,以前我遇到的问题是不同版本.net框架下引起的,你这里的问题具体不清楚了,估计也是和配置文件问题
------解决方案--------------------
你可以找两台操作系统一样的机器(系统、.net环境都一样)进行测试一下