ASP.NET MVC 表单身份验证域属性在 Firefox 中中断登录

Posted

技术标签:

【中文标题】ASP.NET MVC 表单身份验证域属性在 Firefox 中中断登录【英文标题】:ASP.NET MVC Forms Authentication Domain attribute breaks login in Firefox 【发布时间】:2019-01-31 07:58:48 【问题描述】:

我正在尝试跨多个 ASP.NET MVC Web 应用程序共享身份验证。这些应用程序具有不同的子域,例如x.example.com,y.example.com。我已经生成了一个机器密钥并将其添加到应用程序的 web.config 中。我已将域属性添加到表单标签(域 =“example.com”)。

这似乎在 Chrome 中正常工作。登录第一个应用程序后,我导航到第二个应用程序并且不需要登录。但是,在 Firefox 中,它似乎破坏了登录。当我单击登录按钮时,Firefox 似乎会快速重新加载登录页面。我无法登录。

什么可能导致这种行为?用这个域编写的 cookie 是否有一些 Firefox 不喜欢的地方?

【问题讨论】:

可能和CORS有关,可以查一下:***.com/a/6290385/495455 您是否尝试过在开发者工具的“网络”选项卡中检查请求。应该设置了一个 ASP cookie,您可以检查发送到子域 x 的 auth cookie 是否也被发送到子域 y。您也可以尝试在 cookie 名称前加上“.” 【参考方案1】:

浏览器使用同源策略来确定是否将 cookie 发送到网站:发送到主机的 HTTP 请求将包含那些且仅包含其 Domain 属性标识主机本身或主机的 DNS 域的那些 cookie属于。 (Path 和 Port 属性也要考虑在内。)在设置 cookie 时,允许 Web 服务器省略 Domain 属性(然后浏览器将此属性设置为服务器的主机名)或将其设置为服务器的父域.例如,主机 x.domain1.com 可以将 Domain 设置为 .domain1.com,但不能设置为 .domain2.com。设置 cookie Web 服务器使用 Set-Cookie HTTP 标头;将 cookie 中继到 Web 服务器浏览器使用 Cookie 标头。

【讨论】:

以上是关于ASP.NET MVC 表单身份验证域属性在 Firefox 中中断登录的主要内容,如果未能解决你的问题,请参考以下文章

如何支持 NTLM 身份验证并回退到 ASP.NET MVC 中的表单?

ASP.NET MVC 4 (十三) 基于表单的身份验证

ASP.NET MVC 真正使用表单身份验证注销

表单身份验证、ASP.NET MVC 和 WCF RESTful 服务

将 asp.net WebForms 应用程序中的组合表单/Windows 身份验证迁移到 asp.net MVC 应用程序

使用成员资格提供程序的 ASP.NET MVC 4 Web API 身份验证