Jwt 我们需要在客户端/消费者验证JSON Web令牌吗?

Jwt 我们需要在客户端/消费者验证JSON Web令牌吗?,jwt,Jwt,我正在学习一些关于JSON Web令牌的知识。我知道header+声明由一个密钥签名,编码结果被连接到“header.claims.signature”并最终发送回客户端 我有一些基本的疑问: 我们是否需要在客户机/消费者处验证令牌(一旦从服务器接收到令牌,为了真实性起见)?它到底是一个标准还是没有必要?在这方面有什么可供参考的例子吗 如果客户端需要验证令牌,我想它必须知道解密/解码的密钥。在不共享服务器密钥的情况下,是否有其他方法要求客户端自行验证 如果客户端知道密钥,我想它也可以创建自己的

我正在学习一些关于JSON Web令牌的知识。我知道header+声明由一个密钥签名,编码结果被连接到“header.claims.signature”并最终发送回客户端

我有一些基本的疑问:

  • 我们是否需要在客户机/消费者处验证令牌(一旦从服务器接收到令牌,为了真实性起见)?它到底是一个标准还是没有必要?在这方面有什么可供参考的例子吗
  • 如果客户端需要验证令牌,我想它必须知道解密/解码的密钥。在不共享服务器密钥的情况下,是否有其他方法要求客户端自行验证
  • 如果客户端知道密钥,我想它也可以创建自己的令牌。如果是这样,服务器是否需要接受这样的令牌(或者依赖于应用程序/业务?)
我们是否需要在客户端/消费者处验证令牌

在客户端,您通常不验证令牌。将其视为不透明的标记。确保安全,并在向服务器发出请求时使用它

如果客户端需要验证令牌,我想它必须知道解密/解码的密钥。 如上所述,客户端不需要验证令牌

在任何情况下,身份验证服务器(对用户进行身份验证并发出令牌的实例)和资源服务器(拥有受保护资源并需要令牌进行授权的实例)都不相同,令牌的签名和验证通常使用非对称算法来完成,如
RS256
,其中私钥用于对令牌进行签名,并且仅由身份验证服务器知道,公钥用于验证签名

如果客户端知道密钥,我想它也可以创建自己的令牌。如果是这样,服务器是否需要接受这样的令牌(或者依赖于应用程序/业务?)

这就是客户机不应该知道密钥的原因。
当使用对称密钥算法(例如HS256)时,使用相同的密钥对签名进行签名和验证,您不能让客户端知道密钥,因为它可能被滥用以创建假令牌。那么JWT就毫无意义了。对于非对称密钥,如果客户端知道公钥,则没有风险。

据我所知,客户端不是令牌的消费者,客户端是令牌的持有者。否,客户端不需要验证令牌。消费者是应用程序需要读取令牌内容的任何应用程序,在某些情况下,令牌内容与颁发者内容相同,但并非所有情况下都相同。请稍后回答以下问题。刚刚发现了这个问题,因为你的另一个问题今天被链接到了问题中。