时钟偏差和令牌

时间:2017-11-07 08:22:21

标签: oauth oauth-2.0 access-token identityserver4

我需要帮助才能了解它是如何工作的?我们定义时钟偏差来处理两方之间的时间变化。但是,我的困惑是,

  1. 我们拥有令牌中的所有信息,例如令牌创建时间和到期时间
  2. 令牌可以验证
  3. 令牌在服务器上创建
  4. 那么,为什么我们需要时钟偏差?任何人都可以举例说明它是如何工作的,在哪种情况下它会导致问题和帮助?

    由于

3 个答案:

答案 0 :(得分:1)

让我们考虑一个短期访问令牌。当我向服务器发出请求时,服务器将检查我的令牌是否已过期。它如何检查它是否知道令牌何时被创建并且它知道它现在是什么时候。大多数访问令牌在一小时后过期,但这实际上取决于它在auth服务器中的设置方式。因此,如果令牌是在一个多小时前创建的,则它已过期,并且用户会被告知。这就是我们尝试确保服务器与NTP同步的原因。

让我们首先考虑一下究竟什么是时钟偏差。如果我们有两个auth服务器怎么办?你怎么知道他们会有同一时间?如果他们实际上在几分钟后关闭怎么办?一台服务器将返回令牌已过期而另一台服务器不会。如果你是一家小公司,这可能并不重要。

现在考虑一下,如果您是一家拥有全球服务器的大型搜索引擎公司。让我们说它在2016年的秋天和夏令时开始了。现在你有一些服务器一次运行而另一些运行在另一个服务器上。也许只是某些国家在开始夏令时时决定改变,并且繁荣一堆令牌无缘无故地失效。 免责声明我不为上述搜索引擎公司工作。我只是看着这种情况发生了,这是我对发生的事情的理论。

  

为什么我们需要时钟偏差。

你不需要它,但如果你有两个auth服务器,你可以拥有它。所以你应该处理它。 https://softwareengineering.stackexchange.com/a/245182/160992

答案 1 :(得分:1)

这是评论中问题的答案。我无可奉告,没有声誉。 好的,Clock skew不在您的计算机中发生。默认情况下,clock skew设置为5 minutes。这就是jwt token未在所需时间到期的原因!

答案 2 :(得分:0)

这意味着在 ValidateLifetime 模式下设置令牌过期时间的容忍度。ClockSkew 意味着容忍这种不一致(在令牌发行者与其消费者的时间和时间之间)。

时钟偏差量指定验证 exp 和 nbf 声明时服务器和客户端时钟之间允许的时间差(以秒为单位)。推荐的默认值为 5。

enter image description here