由于时差导致的 WCF 错误 InvalidSecurity

WCF Fault InvalidSecurity due to time differences

我遇到了由于客户端和服务器之间的时间不同而发生的错误。通信是安全的,因此错误发生在 System.IdentityModel.Tokens.SecurityToken DoNegotiation(System.TimeSpan) 调用(从 targetSite 开始)。

我可以通过简单地更改客户端的计算机时间来重现此错误。

是否有可能准确检测到这种情况?

我应该自己检查时间吗?

或者我应该准备一条错误消息,指出时差是可能的原因吗?

谢谢,洛萨

安全通道使用 PKI 加时间戳加密,默认偏差为 5 分钟。也就是说,客户端和服务器之间的差异不应超过 5 分钟。有关其工作原理的更多详细信息,google "wcf clock skew".

Windows 因为 Win2k 已经内置了与 NTP 服务器同步时钟的功能,所以请确保在服务器和客户端都打开了这个功能。

通常业务应用程序不应检查时钟的准确性,因为准确性是许多网络功能可能依赖的系统问题。如果系统环境不健康,同一台机器上的许多其他应用程序也会失败。系统问题应通过系统方式解决,在这种情况下,请通过Windows.

内置时间同步功能确保时钟准确