为方便起见,为什么不在JWT有效负载中使用公钥

ale*_*xkb 2 security cryptography oauth digital-signature jwt

据我了解:要检查使用非对称公钥/私钥加密算法创建的JWT的有效性,您需要公钥以及JWT标头,声明(也称为有效负载)和签名.JWT标头和声明可以自由解码,但如果没有公钥来验证签名(基于标头和声明并使用私钥创建),则无法验证.

我的问题是,为什么不将公钥捆绑到令牌的声明有效载荷中.这样,任何人都可以检查令牌的有效性,而无需从数据库或文件存储中挖掘公钥?

Art*_* B. 11

你怎么知道JWT提供的公钥是真实的?众所周知,攻击者可能已生成密钥对,使用私钥对有效负载进行签名,并在JWT中包含数据,签名和公钥.你现在拥有的这个"东西"并没有证明什么.

  • JWT 令牌旨在小而紧凑,添加公钥将使其变得相当大。我相信一些使用多个键的实现添加了一个声明来定义使用哪个键,然后可以查找和应用该键。 (2认同)