4.0框架应用程序和2.0框架应用程序之间的Sigle-Sign-On似乎已被打破。
我有一个基于asp.net framework 2.0构建的旧应用程序和一个基于asp.net framework 4.0的新应用程序,我正在尝试在两者之间配置SSO。
我已经完成了设置相同机器密钥的所有正确配置,其中包含相同的validationKey,decryptionKey,验证和解密属性以及相同的身份验证名称,域,保护和路径属性。
奇怪的是,这个配置在我的本地开发机器上工作正常: - Windows 7旗舰版(Service Pack 1) - 在应用程序池中运行的2.0应用程序设置为v2.0集成 - 在应用程序池中运行的4.0应用程序设置为v4.0集成
但是,在部署服务器窗口事件日志中,我收到“请求的表单身份验证失败。原因:提供的票证无效。”: - Windows Server 2008 R2 Standard(Service Pack 1) - 在应用程序池中运行的2.0应用程序设置为v2.0集成 - 在应用程序池中运行的4.0应用程序设置为v4.0集成
我已检查,重新检查并重新检查部署计算机上的计算机密钥和身份验证配置,因此我确信这不是问题所在。
另外,仅仅为了争论,在部署服务器上,我甚至尝试设置两个应用程序表单保护=“无”只是为了查看加密是否是问题,结果仍然是相同。
此外,在部署服务器上,配置了相同SSO设置的所有其他v2.0应用程序都没有问题。即使那些在不同的应用程序池中运行简而言之,v2.0到v2.0适用于v4.0到v2.0 pukes。
有什么建议吗?
答案 0 :(得分:3)
经过几天的绝望之后,这有效:在4.0 web.config配置标签
中<appSettings>
<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
<add key="aspnet:UseLegacyEncryption" value="true" />
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />
</appSettings>
答案 1 :(得分:0)
有关如何管理旧版Web应用程序之间的加密的提示,请参阅this question的答案。
答案 2 :(得分:0)
如果添加这些appSetting键不起作用,请尝试调整MachineKey元素的兼容模式,尤其是当您的某个应用程序以.NET 4.5为目标时: