如果两个JWT的声明/标题顺序不同,是否仍应将其视为相等?

如果两个JWT的声明/标题顺序不同,是否仍应将其视为相等?,jwt,Jwt,如果我有两个JWT,它们的声明集和头是相同的,但是它们在json中的存储顺序不同,那么它们应该被认为是相等的吗 澄清: 我知道,作为JWTs的用户,您不需要比较它们,但这不是我正在做的 假设我们有一个jwt库,您有一个对象,它以解码的形式表示jwt。如果我们从解码的JWT创建一个编码的JWT,然后将其应用于某个函数,该函数再次返回解码的JWT。如果解码过程中声明或标头存储在某个集合中的顺序是否改变,那么我们认为这两个解码的JWT是相等的吗? 仔细考虑一下,也许将标题和声明存储在具有某种顺序概念的

如果我有两个JWT,它们的声明集和头是相同的,但是它们在json中的存储顺序不同,那么它们应该被认为是相等的吗

澄清:

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

假设我们有一个jwt库,您有一个对象,它以解码的形式表示jwt。如果我们从解码的JWT创建一个编码的JWT,然后将其应用于某个函数,该函数再次返回解码的JWT。如果解码过程中声明或标头存储在某个集合中的顺序是否改变,那么我们认为这两个解码的JWT是相等的吗?
仔细考虑一下,也许将标题和声明存储在具有某种顺序概念的集合中是错误的?使用集合之类的东西可以消除这个问题?

取决于您所说的“不同”是什么意思。如果权利要求是相同的,那么它们在传递的信息相等的意义上是相同的。但是如果它们都有相同的签名,那么至少有一个签名是无效的

此外,您根本不需要比较JWT的声明。如果您正在存储令牌并比较给定的令牌,那么您应该重新考虑在会话之类的内容上使用JWT的原因


JWT的设计是独立的。因为JWT令牌是基于声明的身份验证,所以验证是针对签名进行的,而不是针对服务器上的任何内容。

为什么要比较两个JWT?一个JWT应该拥有针对令牌进行授权所需的所有信息。