JWT 中的 exp (ExirationTime)声明的格式是什么

我使用 ADAL 库来获取资源的访问令牌。有人知道过期时间的格式吗?更确切地说 "exp" (Expiration time) claim.

JwtSecurityToken类在解析之后只返回 int32,所以这不是一个好的指示器。

尝试将其解析为 TimeSpanDateTime,但值之间的间隔不到90分钟,几乎相同。

这是我从 fiddler 获得的 iatexp声明(使用 https://jwt.io/解析令牌)

1475874457

1475878357

两者的价值相差不大。

151528 次浏览

RFC7519指出,expiat索赔值必须是 NumericDate值。

NumericDate第二部分,术语中的最后一个定义,它被定义为自大纪元以来的 几秒钟(不是毫秒)数目:

一个 JSON 数值,表示从 1970-01-01T00:00:00Z UTC 直到指定的 UTC 日期/时间, 忽略闰秒。这相当于 IEEE 标准1003.1, 2013年版[ POSIX.1]定义“自纪元以来的几秒钟”,载于 每天正好是86400秒 比非整数值可以表示。参见 RFC3339 [ RFC3339]了解一般日期/时间及协调世界时的详情 特别。

莱斯给出了正确的答案。如果希望快速将 NumericDate 转换为日期,可以使用以下 PowerShell 命令:

$numericDate = '1636027948'
([DateTime]('1970,1,1')).AddSeconds($numericDate)

产出:

Thursday, 4 November 2021 12:12:28