JWT jti 独特性

Roh*_*hit 3 jwt

我无法理解应该如何使用jtiJWT 中的声明。据我在其他SO问题和在线文档中看到的,我们的想法是它们应该是唯一的,但独特的范围是什么?每个站点/应用程序一个 jti?每个令牌/用户一个 jti?如果我有一个特定于用户的 jti,那么这是否会消除 JWT 无状态的意义,因为我需要以某种方式跟踪令牌?

我很想获得一些帮助来了解如何使用 jti,或者如果我根本不需要它。

ped*_*ofb 6

jti在应用范围内应该是唯一的,以防止两个相等的 JWT。

参见RFC 7519

4.1.7. “jti”(JWT ID)声明

“jti”(JWT ID)声明提供 JWT 的唯一标识符。标识符值的分配方式必须确保相同值被意外分配给不同数据对象的可能性可以忽略不计;如果应用程序使用多个发行者,则也必须防止不同发行者产生的值之间发生冲突。“jti”声明可用于防止 JWT 被重播。“jti”值是区分大小写的字符串。此声明的使用是可选的。

如果您需要黑名单来撤销令牌并确保相同的 JWT 不会发布两次(当包含相同内容而没有时间戳声明时),它可能会很有用

  • 我认为“同一个 JWT 不会发布两次”是让我失望的原因。在同一个应用程序中,同一用户将获得相同的令牌,除非时间戳发生更改(我也不确定重新发出令牌的频率;在每个页面上加载似乎过多),但这是一个完全不同的问题。 (3认同)