jwt - 如果两个 JWT 的声明/ header 的顺序不同,它们是否仍应被视为相等?

标签 jwt

如果我有两个 JWT,它们的声明和 header 集相同,但它们在 json 中存储的顺序不同,是否应该将它们视为相等?

澄清:

我知道作为 JWT 的用户,您不需要比较它们,但这不是我正在做的事情。

假设我们有一些 jwt 库,并且您有一些以解码形式表示 JWT 的对象。如果我们从解码的 JWT 创建一个编码的 JWT,然后将其应用于某个再次返回解码的 JWT 的函数。如果由于解码过程而导致某些集合中声明或 header 的存储顺序发生了变化,我们是否认为两个解码后的 JWT 相等?

更多地考虑这一点,也许将 header 和声明存储在具有某种顺序概念的集合中是错误的?使用像集合这样的东西可以让这个问题消失吗?

最佳答案

取决于你所说的“不同”是什么意思。如果声明相同,那么它们在传递的信息相同的意义上是相同的。但如果它们都具有相同的签名,则至少有一个签​​名无效。

此外,您根本不需要比较 JWT 声明。如果您要存储 token 并比较给定的 token ,那么您应该重新审视为什么要使用 JWT 而不是 session 之类的东西。

JWT 被设计为独立的。由于 JWT token 是基于声明的身份验证,因此验证是针对签名完成的,而不是针对服务器上的任何内容。

关于jwt - 如果两个 JWT 的声明/ header 的顺序不同,它们是否仍应被视为相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113994/

相关文章:

azure - 如何将JWT版本更新到2.0?

node.js - Node : Sending JSON Web token to client with page redirect

javascript - react native : How to remove token with AsyncStorage with JWT ?

c# - ASP.Net Core JWT 登录未设置 HttpContext.User.Claims

api - 使用 JWE 或 JWS 的优缺点是什么

node.js - 当程序中直接提供secret时,jsonwebtoken验证失败

c# - 动态附加 OWIN JWT 资源服务器应用程序客户端(受众)

javascript - 如何在 Node JS 中使用 jwt 向所有用户授权不同的 token

javascript - 从前端到后端签署 api 调用

javascript - 避免在每个请求上验证 jwt token