简体中文

开发者工具 · JWT 解码器

为什么短期访问令牌很重要:JWT 一旦发行就无法撤销

· 为什么它很重要

jwt 身份验证 安全

外部撤销决定旁边的签名令牌时间线
原始 ToolAcre 矢量图

自包含令牌在过期之前一直有效,无论其间发生什么情况。这篇文章解释了撤销问题、可用的缓解措施,以及为什么 exp 是您设置的最重要的声明。

不注销的注销——会话结束后继续工作的令牌

注销可以删除浏览器的本地副本,而先前颁发的独立令牌仍然可以被仅检查签名和声明的验证者接受。用户体验显示“已注销”,但另一个持有者可能会保留相同的紧凑凭证,直到策略边界阻止它为止。

这不是解码器可以解决的问题。 ToolAcre 可能会显示 `exp` 值,并称其相对于浏览器时钟已过期,但它没有会话存储、拒绝列表或颁发者连接。撤销行为属于颁发和使用凭证的体系结构。

无状态验证及其价格——没有中央列表意味着没有中央终止开关

无状态验证允许资源服务器评估加密材料和声明,而无需查询每个请求的中央会话记录。删除该查找还会删除自然的每会话切换,除非添加另一个有状态机制。该交易是建筑性的,而不是仅在 JSON 中可见的财产。

令牌可以包含 `jti`,但在验证者查阅可信存储或规则之前,标识符没有撤销效果。同样,在帐户被禁用后,签名在数学上仍然有效。应用程序接受需要当前的策略,而不仅仅是某些密钥签名的历史字节的证明。

过期和刷新设计可以限制暴露,但此存储库没有定义标准生命周期

系统通常将有界访问凭证与单独的刷新机制结合起来,但此存储库没有定义通用生命周期或声明一个持续时间是合理的。风险、用户体验、检测和基础设施约束各不相同,因此本文不会发明代币生命周期指导。

原则更窄:如果验证者强制执行经过身份验证的 `exp`,则过期边界可以限制被盗访问令牌的有用时间。然后,刷新处理可以在颁发另一个凭证之前查阅更多状态。 ToolAcre 仅显示声明;它既不执行也不执行刷新。

jti 拒绝列表 — 为需要立即撤销的案例重新引入状态

由 `jti` 键控的拒绝列表可以为所选令牌重新引入立即决策点。这需要唯一的标识符、可信的插入路径、存储可用性和验证者查找策略。仅仅解码 `jti` 并不能显示唯一性或证明存储包含它。

根据设计,相同的状态可以支持帐户范围或特定于会话的失效。它还恢复了无状态验证避免的操作依赖性。明确评估缓存故障、保留和传播,而不是将拒绝列表作为自由切换。

自省和密钥轮换 - 询问发行人,或立即使所有内容无效

内省向权威机构询问当前代币状态,将接受转变为在线决策。密钥轮换可以停止已删除密钥下的验证,但它可能会立即使许多令牌失效,并且不能精确替代会话撤销。这些机制解决不同的操作问题。

ToolAcre 不知道它们当前的状态。解码的发行者、密钥标识符或过期时间可以帮助找到相关记录,但专家组从不联系发行者,也从不验证签名。使用权威服务遥测来了解令牌是否处于活动状态、撤销或拒绝状态。

工作示例:计算声明的间隔而不判断是否合理

对于受控示例,从 `exp` 中减去数字 `iat` 以计算有效负载声明的间隔。如果 `iat` 为 1,717,243,200 并且 `exp` 为 1,717,246,800,则差异为 3,600 秒。 ToolAcre 还将每个值显示为 ISO 时刻。

算术不判断区间。它无法证明任一声明是由预期方发出的,并且存储库不提供建议的生命周期。仅在验证后将经过身份验证的值与记录的策略进行比较,然后测试注销和撤销状态如何影响实际请求。

这没有涵盖什么——刷新令牌存储和轮换,这是他们自己的设计问题

刷新令牌存储、轮换和重放检测是单独的设计主题。刷新令牌可能是不透明的,可能具有不同的处理方式,并且不应仅仅因为访问令牌被拒绝而将其发送到资源 API。该解码器是专门围绕类似 JWS 的三部分输入而设计的。

不要将刷新凭据粘贴到其中。如果刷新令牌是不透明的,则可能没有任何有用的解码信息;如果是结构化的,披露仍然会带来信用风险。使用提供商的可信工具和日志诊断发行流程。

过期是验证、撤销状态和凭证设计之间的一种杠杆

过期很有用,但不是完整的撤销策略,也不是解码器的判决。消费系统必须验证令牌、执行时间和受众策略并咨询其架构所需的任何撤销状态。每种机制都有可用性和操作后果。

仅使用 ToolAcre 来观察安全令牌中的值。它可以回答“这个有效负载要求什么间隔?”它无法回答“现在应该接受这个请求吗?”或“此会话是否被撤销?”这些问题属于值得信赖的服务。