【发布时间】:2019-12-15 12:06:18
【问题描述】:
一般来说,JWT 有一个带有签名的编码消息。签名用于检查数据的真实性。我的问题是,这个签名是为了向客户端保证服务器,但是服务器如何信任客户端?换句话说,如果客户端向服务器发送 JWT,服务器如何确定这是正确/经过身份验证的客户端?
我的第二个问题是关于 JWT 的生命周期。我知道有一个声明(exp)可以设置为指示 JWT 的到期。但是,如果客户更改了该声明怎么办?我应该在服务器上保留到期日期以确保 JWT 仍然有效吗? Wikipedia 说:要验证存储在令牌中的会话未被撤销,必须根据数据存储检查令牌断言。这使得令牌不再是无状态的,削弱了 JWT 的主要优势。
【问题讨论】:
-
希望创建 JWT 签名的密钥只有服务器知道,这样可以防止客户端创建服务器可以接受的假 JWT(假设您没有实现问题)。跨度>
-
@TheGreatContini,客户端应该知道这个秘密,以验证它真的来自服务器。
-
这不是一个好的设计。如果您使用公钥加密(ECC 或 RSA),客户端不需要知道秘密,可以只使用公钥进行验证。