JSON Web 令牌如何工作?不确定与 cookie 有何不同

How JSON Web Tokens work? Not sure what is different from cookies

使用 cookie 时,它​​们存储在服务器上,并与来自客户端请求的 cookie 进行比较。 JWT 与什么相比?它们是否被解码成它们的组件?

A JSON Web 签名 (JWS) JWT 不与任何东西“比较”;而是使用加密密钥 validatedVarious algorithms 支持。验证 JWT 的系统必须有权访问适当的密钥以验证特定的 JWT。

对于 对称 算法 (HS{256,384,512}) 包含令牌的 JWS object 使用具有 SHA-2 加密摘要的 HMAC 结构进行验证,密钥通过共享秘密,即必须使用用于生成令牌的相同密钥来验证它。

对于 非对称 算法 ({RS,ES,PS}{256,384,512}) 包含令牌的 JWS object 使用 RSASSA-PKCSv1.5 (RS )、ECDSA (ES) 或 RSASSA-PSS (PS) 算法与 SHA-2 加密摘要,使用 public 密钥对应于用于签署 JWS 的私钥

验证 JWS 的过程(JWT 始终使用 JWS 紧凑序列化 进行序列化)在 JWS Internet-Draft 中定义。简而言之,令牌分为三个部分:header(base64 编码的 JSON object),有效负载(base64 编码的八位字节字符串;对于 JWT,这是一个 JSON JWT 声明 object) 和签名(base64 编码的八位字节字符串)。 header表示使用的算法,这个算法是用来验证签名的,是跨ASCII(BASE64URL(UTF8(Header)) || '.' || BASE64URL(Payload))计算的(这个signing input就是序列化的JWT了到但不包括第二期。)