Asp.Net Forms认证4.0和2.0应用程序之间的SSO

时间:2012-08-28 17:07:20

标签: asp.net single-sign-on application-pool

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。

有什么建议吗?

3 个答案:

答案 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为目标时:

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