Jwt 在json web令牌中使用nbf

Jwt 在json web令牌中使用nbf,jwt,Jwt,nbf:定义不得接受JWT进行处理的时间 我在json web令牌中找到了关于nbf的定义。但是仍然想知道nbf的用法是什么?我们为什么用这个?它是否与担保期限有关 任何想法都将不胜感激。这完全取决于你对时间的理解 我可以虚构的一个可能的场景是——当一个令牌必须从某个特定的时间点持续到另一个时间点 比如说,你正在出售一些API或资源。一个客户购买了一个小时的访问权限,明天中午开始访问 因此,您发布的JWT包含: iat设置为现在 nbf设置为明天下午12:00 exp设置为明天下午1:00 从

nbf:定义不得接受JWT进行处理的时间

我在json web令牌中找到了关于
nbf
的定义。但是仍然想知道nbf的用法是什么?我们为什么用这个?它是否与担保期限有关


任何想法都将不胜感激。

这完全取决于你对时间的理解


我可以虚构的一个可能的场景是——当一个令牌必须从某个特定的时间点持续到另一个时间点

比如说,你正在出售一些API或资源。一个客户购买了一个小时的访问权限,明天中午开始访问

因此,您发布的JWT包含:

  • iat
    设置为现在
  • nbf
    设置为明天下午12:00
  • exp
    设置为明天下午1:00

从创建时起,可以给它3秒的时间,以避免使用机器人,并且只允许人类用户访问API

“nbf”表示“不在之前”


如果nbf=3000,则在创建3秒之前不能使用令牌。这使得暴力攻击几乎不可能进行。

其用途是发出一个令牌,该令牌仅在某个时间点之后才有效。比如说:你为一项服务出售了一份订阅,而你的客户购买了一小时的资源使用时间,从2017-10-10 11:00开始。所以你把相应的
nbf
exp
放进去,你的部分工作就完成了。@pvg你刚才说的避免jwt是什么意思?@zerkms我想你的例子只包括
exp
。例如,当试验开始时,我们有
iat
,然后我们为
exp
设置
iat
之后的时间。
nbf
在哪里?“您的客户从2017-10-10 11:00:00开始购买一小时的资源使用费”。2017年10月10日是未来的日子(因为今天是2017年4月8日)。他们对资源的访问从这一点开始,持续一个小时。@pvg没有任何参数的答案是无用的答案。这10秒的延迟如何阻止机器人?@AndrzejMartyna它本身并不能真正阻止任何事情,但是设置一个高值可以减缓潜在攻击者试图通过暴力手段进入的速度。对于未来的读者:
nbf
应该是一个数字日期,而不是毫秒数。TBH,您的场景有点不切实际。如果攻击者只需要“一个”令牌,那么10秒的等待就不算什么了。请注意,无论
nbf
,他们都知道自己是否获得了有效的令牌。现在,如果他们需要不止一个代币,他们可以简单地构建一个包含数千个代币的FIFO队列,只需支付一个“10秒”延迟税,而不是10秒乘以N延迟。再说一次,他们会支付这10秒或者其他任何费用,不管怎样,只支付一次。这不是魔法验证码,也不会阻止任何暴力。这个答案在当前或之前的任何形式中都毫无意义。“我可以编造的一个可能的场景”我很想听到其他任何场景。我能想到的唯一目的是发行在发行时无效的代币,而(我能想到的)唯一目的正是你所说的:如果你出售有时间限制的东西,并且你的位置在未来的某个地方。