3

4.0 框架应用程序和 2.0 框架应用程序之间的单点登录似乎被破坏了。

我有一个基于 asp.net framework 2.0 的旧应用程序和一个基于 asp.net framework 4.0 的新应用程序,我正在尝试在两者之间配置 SSO。

我已经完成了设置具有相同validationKey、decryptionKey、验证和解密属性以及相同身份验证名称、域、保护和路径属性的相同机器密钥的所有正确配置。

奇怪的是,这个配置在我的本地开发机器上运行良好: - Windows 7 Ultimate(Service Pack 1) - 在应用程序池中运行的 2.0 应用程序设置为 v2.0 集成 - 在应用程序池中运行的 4.0 应用程序设置为 v4.0 集成

但是,在部署服务器 Windows 事件日志中,我收到“请求的表单身份验证失败。原因:提供的票证无效。”:- Windows Server 2008 R2 Standard (Service Pack 1) - 在应用程序池中运行的 2.0 应用程序设置为v2.0 Integrated - 应用程序池中运行的 4.0 应用程序设置为 v4.0 Integrated

我已经检查、重新检查并重新检查了部署机器上的机器密钥和身份验证配置,所以我确定这不是问题所在。

另外,为了争论,在部署服务器上,我什至尝试设置两个应用程序表单 protection="None"只是为了查看加密是否是问题并且结果仍然相同。

此外,在部署服务器上,使用相同 SSO 设置配置的所有其他 v2.0 应用程序都没有问题。即使是在不同的应用程序池中运行的那些。简而言之,v2.0 到 v2.0 可以工作,而 v4.0 到 v2.0 会呕吐。

有什么建议么?

4

3 回答 3

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>
于 2012-09-04T23:13:56.637 回答
0

如果添加这些 appSetting 键不起作用,请尝试调整 MachineKey 元素的兼容模式,尤其是当您的应用程序之一面向 .NET 4.5 时:

http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx

于 2013-08-21T15:01:05.460 回答
0

有关如何管理旧版 Web 应用程序之间的加密的提示,请参阅此问题的答案。

于 2012-08-28T18:47:06.183 回答