为什么 jwt 令牌显示有效负载,即使我没有在 Jwt.io 中提供秘密(签名)?



eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjIsImlhdCI6MTU2ODY1NjI1OX0.E2TNtWjqyPC-4myEom6leLJgE96ZlQOq0-mcBr3p5QU

如果我们使用 JsonWebToken 从我的代码生成的令牌放在 Jwt.io 站点中,即使我没有提供要验证的密钥,它也会立即解码。 我不知道为什么它显示。有人可以解释一下原因吗?

--那么JWT中SECRET的目的是什么?

我认为您在加密和签名之间有点困惑。

JSON Web 令牌没有加密,它只是 base64 编码,这意味着任何人都可以轻松解码和查看。

但是,它是经过签名的,这意味着它具有基于其中所有信息和密钥生成的hash。只有那些拥有密钥(用于对称哈希(或公钥(用于非对称哈希(的人才能确认令牌已被正确哈希处理,并且只有密钥的提供者(拥有密钥(才能创建有效的哈希。

这样做的作用是让您确信令牌是由您认为它创建的人/服务创建的,防止冒充等,因此允许您信任令牌中已进行claims。如果该哈希因任何原因无效,您将立即拒绝该令牌,因为它很可能是伪造的。

请注意,正如@FlorentMorselli提到的,有一种叫做JWE的加密令牌。

最新更新