【问题标题】:FormsAuthentication Fails To Authenticate After Changing DomainFormsAuthentication 更改域后无法进行身份验证
【发布时间】:2012-08-30 18:09:24
【问题描述】:

在我试图协助的客户项目中,我遇到了一个关于 FormsAuthentication 的有趣问题。问题来了:

  • Web 应用程序的域已从 .companyA.com 更改为 .companyB.com,我设置了 IIS 重定向以将任何尝试访问 .companyA.com 的人发送到 .companyB.com。这工作得很好。

  • 现在我无法登录该站点。我做了一些挖掘,发现 web.config 中定义了 authCookies,所以我更改了 authCookie 域以匹配 .companyB.com。我仍然无法登录。

  • 我进行了更多挖掘,发现设置了 SQL 报告服务器。我更改了报告服务器配置文件中的域以匹配 .companyB.com。仍然无法登录。

对于此类问题的通用故障排除,我还有其他地方可以查看吗?我刚刚被当作交火,所以我的领域知识有限,无法在 VS 中打开解决方案,因为他们唯一可用的 VS 对解决方案来说太旧了。

编辑:好的,经过进一步挖掘,我发现用户没有进行身份验证不是主要问题。连接到报告服务数据库时出现问题,异常被吞没。值得庆幸的是,它出现在事件查看器中。不幸的是,这仍然给我留下了问题,我无法弄清楚为什么 SQL 不再对我进行身份验证以及更改域名可能会如何导致这种情况。

【问题讨论】:

  • 您在哪个网站上进行身份验证?在web.config中更改域后,cookie域是否发生了变化?
  • 我更改了 web.config 中的 cookie 域。我不确定这是否需要在其他地方进行更改。当前在网站上创建的 cookie 都具有正确的域。

标签: c# sql-server-2008 iis-6 forms-authentication windows-server-2003


【解决方案1】:

调试非常简单。只需获取任何 http 调试器(Fiddler 即可)并运行您的应用程序。您将看到一个请求列表。只需注意设置 auth cookie 的响应以及连续请求中发生的情况。

您可能会看到 cookie 已设置但进一步丢失。这可能是因为 cookie 是为域 A 发出的(您将在调试器中看到 cookie 的域)并且浏览器没有将其传送到域 B(浏览器应该这样做;它永远不会将 cookie 传送到其他域)。

不管怎样,一个 http 调试器在这里会很有帮助。

【讨论】:

  • 我正在使用 firebug 来查看响应。仅创建了一个会话 cookie,但它确实具有正确的域。好像没有创建 authCookie,这没有意义,因为我从未更改过任何逻辑。
  • 我不知道萤火虫显示什么。要 100% 确定,请使用 Fiddler。
  • 看起来它甚至还没有达到可以设置 authCookie 的程度。我想这是特定领域的,我必须自己弄清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2016-01-10
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2013-05-30
  • 1970-01-01
相关资源
最近更新 更多