JWT中exp(过期时间)声明的格式是什么
我正在使用ADAL库获取资源的访问令牌。有人知道过期时间是什么格式吗?更具体地说JWT中exp(过期时间)声明的格式是什么,jwt,azure-active-directory,adal,Jwt,Azure Active Directory,Adal,我正在使用ADAL库获取资源的访问令牌。有人知道过期时间是什么格式吗?更具体地说 “exp”(过期时间)索赔 JwtSecurityToken类在解析后只返回int32。因此,这不是一个好的指标 已尝试将其解析为TimeSpan和DateTime,但两个值的间隔不是90分钟。几乎一样 这是我从fiddler那里得到的iat和exp声明(用于解析令牌) iat:1475874457 exp:1475878357 两个值相差不大。RFC 7519规定,和索赔值必须是NumericDate值 Nume
“exp”(过期时间)索赔
JwtSecurityToken
类在解析后只返回int32。因此,这不是一个好的指标
已尝试将其解析为TimeSpan
和DateTime
,但两个值的间隔不是90分钟。几乎一样
这是我从fiddler那里得到的iat
和exp
声明(用于解析令牌)
iat
:1475874457
exp
:1475878357
两个值相差不大。RFC 7519规定,和索赔值必须是NumericDate
值
NumericDate
是中的最后一个定义,定义为自历元起的秒数(不是毫秒):
一个JSON数值,表示从
1970-01-01T00:00:00Z UTC,直到指定的UTC日期/时间,
忽略闰秒。这相当于IEEE标准1003.1,
2013年版[POSIX.1]定义“从纪元开始的秒数”,以
每天的时间正好是86400秒,其他的
然后,可以表示非整数值。见RFC 3339
[RFC3339]了解有关一般日期/时间和UTC的详细信息
特别的
1475878357-1475874457=3900秒
,3900秒/60秒=65分钟
(1小时令牌生命周期+5分钟时钟偏移)您使用的是什么平台?在windowsnew Date上使用.NET(expires_at*1000)我打算对.NET选择使用int32
值作为UNIX时间戳发表贬损评论(2038每秒钟就要接近一次!)但问题似乎不准确地报告了JwtSecurityToken
类。它返回的是DateTime
,而不是int32
。你从哪里得到int32
的东西?我在寻找JWT token exp的格式(我知道它是EPOCH,但以秒或毫秒为单位),这就回答了我的问题。可以像这样转换为Javascript日期时间:新日期(exp_in_seconds*1000)
(其中Javascript从epoch开始需要毫秒;a)@TheRedPea我认为您的评论可能会误导,因为“Unix时间戳”部分.Unix时间戳指定秒数。JSON Web令牌使用秒数。JavaScript日期使用毫秒数。谢谢@Vincent你说得对,这就是我乘以1000的原因。我的帖子仍然暗示它们是相同的单位;正如你指出的,它们是不同的单位(JWT的时间戳以秒为单位,但Javascript日期需要毫秒);但是JWT和Javascript日期构造函数都使用了“从纪元开始”的思想。这篇博文给出了这个问题的简单解决方案,它创建了一个扩展方法来处理这个问题。