SSO的.Net Forms身份验证Cookie过期问题

时间:2009-08-05 16:43:00

标签: asp.net forms-authentication

让我在遇到问题之前稍微描述一下我的设置。我有两个使用Forms身份验证的Web服务器(www.mydomain.com和www2.mydomain.com)。在每个Web服务器上,我都有一个主要的身份验证应用程序和众多子应用程序。它看起来像这样:

www.mydomain.com

|__MainApp (.Net 2.0)
    |__SubApp1 (.Net 1.1)
    |__SubApp2 (.Net 2.0)
    |__SubApp3 (.Net 2.0)

www2.mydomain.com

|__MainApp (.Net 2.0)
    |__SubApp1 (.Net 1.1)
    |__SubApp2 (.Net 2.0)
    |__SubApp3 (.Net 2.0)

正如您所看到的,我在同一台服务器上运行了.Net 1.1和2.0应用程序。现在我一直在努力想出一个单点登录(SSO)解决方案,该解决方案适用于此设置,我已经部分成功了。因为标记中的域属性与.Net 1.1不兼容(它导致应用程序抛出异常),所以我决定以编程方式设置生成的表单身份验证cookie的域。这工作正常,我可以在两个服务器之间导航,而无需再次登录。当服务器尝试重新发布/续订cookie并在启用slidingExpiration时更新其到期时,会出现此问题。我生成的cookie是以“mydomain.com”作为域创建的,但是当服务器尝试重新发布新的过期时,它无法找到它并生成一个全新的cookie,其中包含“www.mydomain.com”域名。

是否有服务器使用自定义域正确重新发出原始cookie?

3 个答案:

答案 0 :(得分:0)

我们有一个几乎相同的设置(两个Web服务器,1.1,2.0和3.5 app的混合)和使用表单身份验证的SSO。我们已经让它在滑动到期时没有问题。

一个区别是我们的两个Web服务器被设置为Web场(如果我没记错的话,使用服务器2k3中的MS Clustering)。这意味着两台计算机都分配到同一个域。您可以将两台服务器切换为Web场吗?

答案 1 :(得分:0)

如果我们走这条路,那将更像是一个长期的解决方案。在短期内,我只是希望看到有人知道为什么框架无法找到并重新发布现有的cookie。

答案 2 :(得分:0)

我的解决方案是将Forms Authentication域属性添加到.Net 2.0框架的全局Web.config(C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ Web.config)。它不能解决我的.Net 1.1应用程序的问题,但我的大多数应用程序都在2.0上。我可能只是使用HTTPModule来处理.Net 1.1应用程序的滑动过期。