有一个仍处于开发阶段的站点,它使用 ServiceStack 的 Open ID 实现来登录用户。一直工作正常,今天早上突然 Google 的 OpenID 登录开始失败,Facebook 的身份验证仍然正常。不会引发任何错误,只是重定向回默认 url,并附加以下内容:
#f=Unknown
在我的本地主机上它工作完美,Google 和 FB 登录都正常,只有在生产中才会失败。我已经尝试了很多:
- 重新验证了我的 asp.net bin 文件夹中的每个文件,与本地和生产环境相比,没有区别。
- 将生产域名重新路由到我的本地主机(在主机文件中),希望逐步完成 session 的创建。运气不好,仍然可以完美登录。
- 通过远程桌面连接到服务器并尝试以本地主机身份登录,但失败。 (是的,WTH?)。
有什么方法可以获取身份验证发生时发生的情况的日志吗?或者有人知道可能是什么问题吗?
旁注:我最近更改了域名的 dns 设置并将其移动到这台新服务器,但那是大约 3-4 天前的事,并且一直工作正常,直到今天早上。还注意到我的 IP 上的反向 DNS 查找解析到了不同的域,现在正在对此进行调查。
更新
这个问题今天早上再次出现。我不确定是什么原因造成的,但我怀疑 Windows 自动时间同步以某种方式导致了问题。我将把它关掉并密切关注它是否会回来。另外,这个问题似乎让我的 SSL 设置陷入困惑,我必须手动重置 IIS 的 SSL 绑定(bind)才能正常工作,甚至 WebDeply 也会受到影响。很奇怪。
更新2 今天又出现问题了。我现在怀疑它与 IIS 的 Web 部署功能有某种关系,因为它是在我发布站点后立即发生的。现在还意识到我不需要重新启动,一个简单的 iisreset 似乎可以修复它。会持续关注。
最终更新 我终于找到了罪魁祸首。时间。我的虚拟服务器获得时间的速度非常快,每隔几天它就会领先于大多数其他服务器,因此身份验证将会失败。限制似乎在3-5分钟左右,在这个范围内,认证工作正常。不仅如此,它还失败了。要解决这个问题,只需启用时间同步,它就不会再出现。
最佳答案
您可以检查生产服务器时钟。 OpenID 请求与互联网时间同步以验证请求。如果时钟关闭或关闭了一段时间,只需重新启动即可解决问题。
关于asp.net - ServiceStack google OpenID突然无法登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18417826/