我不明白为什么要在签署JWT中使用公钥。私钥在那里,JWT令牌不能伪造,是吗?但是为什么还要额外使用公钥签署它?有什么好处吗?因为我根本不明白。毕竟,用私钥签署的JWT可以在没有公钥的情况下读取。这个公钥是干什么的?
为JWT签名意味着你获取明文,用密钥签名——RSA对的私钥或对称密钥,然后将签名添加到JWT。JWT本身仍然是可读的,无需解密签名。但是拥有密钥的人可以解密签名并确认内容与明文匹配。
与对称密钥相比,使用RSA的优点是任何人都可以验证签名,而不必拥有密钥。您可以通过侧通道将公钥传递给JWT接收者,或者如果使用OAuth2,它提供了访问公钥的URL。
您将使用公钥进行加密,而不是签名。您使用收件人的公钥进行加密,以便只有收件人可以解密它。