2

有一个仍在开发中的站点,它使用 ServiceStack 的 Open ID 实现来登录用户。它一直运行良好,今天早上突然谷歌的 OpenID 登录开始失败,Facebook 仍然可以正常验证。不会抛出任何错误,只是重定向回默认的 url,并附加以下内容:

#f=Unknown

在我的本地主机上,它可以完美运行,谷歌和 FB 登录都可以,只有在生产中才会失败。我已经尝试了很多:

  1. 与本地和生产相比,重新验证了我的 asp.net bin 文件夹中的每个文件,没有区别。
  2. 将生产域名重新路由到我的 localhost(在 hosts 文件中),希望能够逐步创建会话。没有运气,仍然可以完美登录。
  3. 通过远程桌面连接到服务器并尝试以 localhost 身份登录它,但失败了。(是的,WTH?)。

有没有一种方法可以让我记录身份验证发生时发生的事情?或者有没有人知道可能是什么问题?

附带说明:我最近更改了域名的 dns 设置并将其移至此新服务器,但那是大约 3-4 天前的事情,并且一直运行良好,直到今天早上。还注意到我的 IP 上的反向 DNS 查找解析到不同的域,现在正在调查。

更新

这个问题今天早上再次引起了它的丑陋。我不确定是什么原因造成的,但我怀疑 Windows 自动时间同步会以某种方式把事情搞砸。我将其关闭并密切关注事情是否会恢复。此外,这个问题似乎使我的 SSL 设置陷入混乱,我必须手动重置 IIS 的 SSL 绑定才能正常工作,即使 WebDeply 也会受到影响。很奇怪。

更新 2 问题今天再次发生。我现在怀疑它与 IIS 的 Web 部署功能有关,因为它在我发布我的网站后立即发生。现在也意识到我不需要重新启动,一个简单的 iisreset 似乎可以解决它。会持续关注。

最终更新 我终于找到了罪魁祸首。时间。我的虚拟服务器获得了非常快的时间,每隔几天它就会领先于大多数其他服务器,因此身份验证会失败。限制似乎在 3-5 分钟左右,在该范围内,身份验证工作正常。更重要的是,它失败了。要绕过它,只需启用时间同步,它就不会重新出现。

4

1 回答 1

2

您可以检查您的生产服务器时钟。OpenID 请求与互联网时间同步以验证请求。如果时钟关闭或关闭了一段时间,只需重新启动即可解决问题。

于 2013-08-24T11:11:19.017 回答