【问题标题】:How to preserve authentication for ASP.NET Forms authentication cookie, Http to Https (different domains) and back?如何保留 ASP.NET Forms 身份验证 cookie、Http 到 Https(不同域)和返回的身份验证?
【发布时间】:2010-08-19 13:19:04
【问题描述】:

我们有一个允许用户登录的非 SSL ASP.NET Web 应用程序(ASP 表单身份验证,inproc)。

一旦通过身份验证,我们会将他们的浏览器重定向到我们无法控制的另一个网站/域上的外部 SSL 安全页面。

完成后,客户端将重定向回我们原始 http Web 应用程序上的预配置 URL。

但是,客户随后被要求在我们这边再次“重新登录”,这是不受欢迎的......

在 HTTP 和 HTTPS 之间转换并再次返回时,表单身份验证 cookie 似乎被破坏了。

如何使表单身份验证 cookie 保持活动状态,以便客户不必在往返过程中重新进行身份验证?

【问题讨论】:

  • 仅供参考:远程 SSL 站点使用 ASP,我们的站点使用 ASP.NET。

标签: asp.net ssl forms-authentication


【解决方案1】:

它没有被破坏;您没有在您的域上进行身份验证,因此没有在您的域上设置 cookie,因此您域上的请求将不包含所述身份验证 cookie。

这很好。如果这没有发生,那么您访问过的每个域的每个 cookie 都会随每个请求一起发送。这显然是 1)疯狂和 2)安全漏洞。在 mydomain.com 上设置 cookie从不对 myotherdomain.com 上的页面可见。

如果您使用的是 3rd 方身份验证系统,例如 google、facebook 等,它们都会有某种回调令牌,您必须处理并设置您自己的 cookie。

【讨论】:

  • 我正在对我的域进行身份验证。我们正在使用表单身份验证。不确定我是否理解您在第一段中的意思,并且我们没有使用上一段中提到的第 3 方。 cookie 应该仍然存在于客户端浏览器缓存中并且没有过期,那么为什么当它们返回时不能再次“拾取”呢?
  • 您写道:“一旦通过身份验证,我们会将他们的浏览器重定向到另一个网站/域上的外部 SSL 安全页面”。身份验证 cookie 不会在域之间传输。
【解决方案2】:

考虑为您的 cookie 设置 cookie 的域属性,指定更多 can be found here 或尝试以下代码:

Response.Cookies["your_cookie_name"].Domain = "yourdomain.com";

【讨论】:

    【解决方案3】:

    您正在寻找单点登录解决方案。 对于您的问题,这可能有点矫枉过正,您可能只想获得相同的域名。但如果这不是一个选项,您可能想看看: Windows Identity Foundation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-21
      • 2011-08-19
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 2021-12-23
      • 2017-12-31
      • 2016-05-30
      相关资源
      最近更新 更多