JWT jti 唯一性
Posted
技术标签:
【中文标题】JWT jti 唯一性【英文标题】:JWT jti uniqueness 【发布时间】:2017-08-18 19:00:20 【问题描述】:我在理解如何在 JWT 中使用 jti
声明时遇到了一些麻烦。据我在其他 SO 问题和在线文档中看到的,想法是它们应该是独一无二的,但在什么范围内是独一无二的?每个站点/应用程序一个 jti?每个令牌/用户一个 jti?而且,如果我有一个特定于用户的 jti,那是否会取消 JWT 无状态的点,因为我需要以某种方式跟踪令牌?
我很想得到一些帮助来了解如何使用 jti,或者我可能根本不需要它。
【问题讨论】:
【参考方案1】:jti
在应用范围内应该是唯一的,以防止两个相等的 JWT。
见RFC 7519
4.1.7。 “jti”(JWT ID)声明
“jti”(JWT ID)声明为 JWT 提供了唯一标识符。 标识符值的分配方式必须确保 相同值的概率可以忽略不计 意外分配给不同的数据对象;如果申请 使用多个发行者,必须防止值之间的冲突 也由不同的发行人制作。可以使用“jti”声明 以防止 JWT 被重放。 “jti”值是一个案例- 敏感字符串。使用此声明是可选的。
如果您需要一个黑名单来撤销令牌并确保相同的 JWT 不会被两次发布(当包含相同的内容而没有时间戳声明时),这可能会很有用
【讨论】:
我认为“相同的 JWT 不会发布两次”是让我失望的原因。在同一个应用程序中,同一个用户将获得相同的令牌,除非时间戳发生变化(我也不确定重新发布令牌的频率;在每个页面加载似乎都过大),但这是一个完全不同的问题。以上是关于JWT jti 唯一性的主要内容,如果未能解决你的问题,请参考以下文章