【问题标题】:.Net Forms Authentication Cookie Expiration Problem for SSOSSO 的 .Net Forms 身份验证 Cookie 过期问题
【发布时间】:2009-08-05 16:43:00
【问题描述】:

在我解决这个问题之前,让我先描述一下我的设置。我有两个使用表单身份验证的 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) 解决方案,并且我已经部分成功。因为标签中的 domain 属性与 .Net 1.1 不兼容(它会导致应用程序抛出异常),所以我决定以编程方式设置生成的表单身份验证 cookie 的域。这工作正常,我可以在两台服务器之间导航,而无需再次登录。当服务器尝试重新发布/更新 cookie 并在启用了slidingExpiration 的情况下更新其过期时间时,就会出现问题。我生成的 cookie 是使用“mydomain.com”作为域创建的,但是当服务器尝试以新的过期时间重新发出它时,它找不到它并生成一个带有“www.mydomain.com”的全新 cookie域。

有没有办法让服务器正确地重新发布带有自定义域的原始 cookie?

【问题讨论】:

    标签: asp.net forms-authentication


    【解决方案1】:

    我们有一个几乎相同的设置(两个 Web 服务器,混合了 1.1、2.0 和 3.5 应用程序)和使用表单身份验证的 SSO。而且我们可以毫无问题地使用滑动到期。

    一个区别是我们的两个网络服务器被设置为一个网络场(如果我没记错的话,使用服务器 2k3 中的 MS 集群)。这意味着两台机器都被分配到同一个域。你能把你的两台服务器变成一个网络农场吗?

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我的解决方案是将表单身份验证域属性添加到 .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 应用程序的滑动到期。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-30
          • 2020-06-03
          • 1970-01-01
          • 1970-01-01
          • 2018-09-29
          • 1970-01-01
          • 1970-01-01
          • 2014-04-29
          相关资源
          最近更新 更多