据我了解:要检查使用非对称公钥/私钥加密算法创建的JWT的有效性,您需要公钥以及JWT标头,声明(也称为有效负载)和签名。 JWT标题和声明可以自由解码,但如果没有公钥来验证签名(基于标题和声明并使用私钥创建),则无法验证。
我的问题是,为什么不将公钥捆绑到令牌的声明有效负载中。这样,任何人都可以检查令牌的有效性,而无需从数据库或文件存储中挖掘公钥?
答案 0 :(得分:11)
您如何知道JWT提供的公钥是真实的?众所周知,攻击者可能已生成密钥对,使用私钥对有效负载进行签名,并在JWT中包含数据,签名和公钥。你现在拥有的这个“东西”并没有证明什么。