积极答复者
跨应用程序进行 Forms 身份验证的问题

问题
-
按照 跨应用程序进行 Forms 身份验证(http://msdn.microsoft.com/zh-cn/library/eb0zx8fc.aspx) 中的说明,
建立两个Web Site:
站点一: site1.demo.com,
站点二:site2.demo.com
web.config内容配置如下:
<authentication mode="Forms">
<forms name=".ASPXFORMSAUTH" protection="All" path="/" domain="demo.com" ></forms>
</authentication>
<machineKey decryptionKey="D373A5301A620BA8CFE4FC2EFA52A6280622DCEF78D6C901" validation="SHA1" validationKey="DA8C960FE9516857DCBABB3D11EFBFD81BEF9CB0FB8BD896623A5ADFA695ECDB186E0DBCF8D04A7367879093DBB19179C502204C289AB1900432CDDAB446C2B2" />
第一种情况:site1.demo.com 和 site2.demo.com 部署在同一台服务器上
在site1.demo.com登录后,site2.demo.com中的用户状态也显示为登录状态。这种情况下没有问题;
第二种情况: site1.demo.com 和 site2.demo.com 部署在不同的服务器上
在site1.demo.com登录后, site2.demo.com中的用户状态显示为未登录状态,
将forms 配置属性 protection 设置为 "Validation"或"None"时,site1.demo.com 和 site2.demo.com 的身份信息可以共享,
将forms 配置属性 protection 设置为 "Encryption"或"All"时身份信息不能共享。
有哪位遇到过这种情况,帮忙解答一下,多谢了。- 已编辑 Mars2012 2010年12月4日 13:03 修改内容
答案
-
问题原因:
有一台服务器的操作系统安装了一个系统更新(补丁),修改了Froms 认证的加密算法。
详情见
http://technet.microsoft.com/zh-cn/security/bulletin/MS11-100
http://support.microsoft.com/kb/2638420
解决方法:
确保应用程序所在的所有服务器都安装了这个更新。
另外的解决方法可参考
http://stackoverflow.com/questions/9281419/setting-up-persistent-forms-authentication-on-multiple-servers-and-subdomains
全部回复
-
两台机器的MachineKey完全相同,其中一台是虚拟机。
两台机器的IIS都是7.5的,应用程序池:2.0 经典。
开发环境:VS2010 目标框架:2.0。
decryption 设为 "AES" 也不行。
<machineKey
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>
- 已编辑 Mars2012 2010年12月6日 14:18 修改
-
-
问题原因:
有一台服务器的操作系统安装了一个系统更新(补丁),修改了Froms 认证的加密算法。
详情见
http://technet.microsoft.com/zh-cn/security/bulletin/MS11-100
http://support.microsoft.com/kb/2638420
解决方法:
确保应用程序所在的所有服务器都安装了这个更新。
另外的解决方法可参考
http://stackoverflow.com/questions/9281419/setting-up-persistent-forms-authentication-on-multiple-servers-and-subdomains