为什么在非常罕见的情况下,JWT iat比nbf小?
在iOS和Android中,JWT属性iat包含的值比nbf中的值小的情况非常少见 因此,用户会收到错误消息“ID令牌已过期”。这也是有道理的,但问题是为什么iat的时间会比nbf的时间短 有没有办法防止iat在identityserver4中小于nbf 这永远无法通过webbrowser(nextuth.js)复制。对于iOS和Android中的身份验证,我们使用appauth iOS和appauth Android 在出现上述错误的情况下,我们得到如下标记:为什么在非常罕见的情况下,JWT iat比nbf小?,jwt,identityserver4,appauth,Jwt,Identityserver4,Appauth,在iOS和Android中,JWT属性iat包含的值比nbf中的值小的情况非常少见 因此,用户会收到错误消息“ID令牌已过期”。这也是有道理的,但问题是为什么iat的时间会比nbf的时间短 有没有办法防止iat在identityserver4中小于nbf 这永远无法通过webbrowser(nextuth.js)复制。对于iOS和Android中的身份验证,我们使用appauth iOS和appauth Android 在出现上述错误的情况下,我们得到如下标记: { "nbf&qu
{
"nbf": 1621951659,
"exp": 1621951959,
"iss": "issuer",
"aud": "apps",
"nonce": "V82ztq0cxNqslpVNsm_YYJZKJVUVhSpZlniB9hrXZ_o",
"iat": 1621951658,
"at_hash": "poDvhvDZ8EF__10uJiB2tQ",
"s_hash": "1gg8istJoI9ATRN3H814rw",
"sid": "F3559C9E64428AC1EA384588519CFBFB",
"sub": "test@email.com",
"auth_time": 1621951656,
"idp": "local",
"family_name": "Muster",
"given_name": "Peter",
"ClientId": "testapp",
"amr": [
"pwd"
]
}
这些值之间的时间差是多少?大多数客户端库需要考虑某种时钟漂移。iat和nbf之间的时间差只有一秒。iat值是来自identityserver还是来自客户端库?我猜这两个时间戳都是单独创建的,但通常都发生在一秒钟之内。但是当第一个时间戳(iat)在12:00:00.999获取时,nbf可能会在12:00:01.000创建,只需1毫秒,但会产生1秒的差异。