我有两个 .NET C# 项目。它们将部署在同一个域下,例如 domain.com。
几年后也创建了一个项目。它使用.NET 4.0。我们称之为 MAIN_1。该项目使用另一个外部项目对用户进行身份验证,该项目甚至更早(.NET 3.5)。我们称之为 AUTH_PROJ。我正在 VS2012 中使用 MVC4 和 .NET 4.5 创建一个新项目。我们称之为 MAIN_2。MAIN_1 和 MAIN_2 将部署在同一个域(例如 domain.com)下。我的目标是让用户在 MAIN_1 中登录并在 MAIN_2 中进行身份验证。我在网上搜索,发现这篇文章http://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic非常有趣和有用。我通过在 Visual Studio 2012 Professional 中制作一些简单的 MVC 项目来测试单点登录:
- 项目一:.NET4.5 MVC4 互联网项目。=> 网站 1
- 项目 2:与项目 1 相同。=> 网站 2
- 项目 3:.NET 4 MVC3 互联网项目。=> 网站 3
- 项目 4:与项目 2 相同。=> 网站 4
在这 4 个项目中,我添加了相同的机器密钥,并将 domain="localhost" 添加到 Web.config 文件中的表单身份验证中。
然后我测试了单点登录。我在网站 1 中创建了一个帐户并登录。我打开了网站 2,它已经登录了。太棒了!网站 3 和 4 相同。
但是当我混合不同的框架时,没有任何效果。
我在firebug中检查了浏览器cookie。.ASPXAUTH cookie 保留在那里。但是如果 cookie 是由项目 1 创建的,并且我调试项目 3,我可以获得除 .ASPXAUTH cookie 之外的所有 cookie。似乎 .ASPXAUTH 取决于框架,虽然它在 Firefox 中可见,但其他框架项目看不到它。
谁能帮我弄清楚为什么 .ASPXAUTH cookie 在 C# 代码中变得不可见,还有其他方法可以使单点登录工作吗?谢谢