Answers:
您选择不加密有效负载的原因与您选择不加密任何其他内容的原因相同:成本(无论多么小)都超过了收益,并且不需要以这种方式保护很多数据。
您最需要防止的是人们篡改数据,以便更新错误的记录,或者某人的支票帐户从其中获得的钱本来应该没有。JSON Web令牌的签名可以实现这一点,因为更改标头/有效负载/签名组合的任何部分都会使数据包无效。
请注意,您仍然可以使用SSL在传输层保护数据包。
RFC中术语签名的使用类似于非对称密码学中的数字签名。在非对称加密中,如果发件人使用其私钥加密消息,则拥有该消息的任何人都可以使用发件人的公钥对其进行解密。因此,使用“ 签名 ”一词的目的不是要保留消息的秘密,而是要验证消息的完整性/发送者,这一点并未更改。
对于JWT,发送系统既是消息的创建者又是消息的使用者(请参见下图),并且目标是确保传递给用户的令牌不被篡改(例如,赋予较高的特权)。
正如@Robert所提到的,JWT可以/仍应该使用TLS加密。
这是对JWT和签名的很好的解释,下面的图像源自这些JWT和签名。理解JSON Web令牌(JWT)的5个简单步骤
要添加到Robert Harveys的答案中,对有效负载进行加密有一个很大的缺点-这意味着服务的接收者需要与身份验证服务器(加密密钥)共享一个秘密,以了解令牌的持有者是否已被授权或不。相反,任何人都只能使用认证服务器发布的公钥来验证JWT。
这是openid connect规范的关键部分,因为它允许客户端应用程序验证由auth服务器发出的身份令牌,它还使部署资源服务器变得更加容易(因为不需要通过秘密加密来进行部署)键),并且在尝试诊断已发布的JWT的任何问题时也有帮助。