eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjIsImlhdCI6MTU2ODY1NjI1OX0.E2TNtWjqyPC-4myEom6leLJgE96ZlQOq0-mcBr3p5QU
如果我们使用 JsonWebToken 从我的代码生成的令牌放在 Jwt.io 站点中,即使我没有提供要验证的密钥,它也会立即解码。 我不知道为什么它显示。有人可以解释一下原因吗?
--那么JWT中SECRET的目的是什么?
我认为您在加密和签名之间有点困惑。
JSON Web 令牌没有加密,它只是 base64 编码,这意味着任何人都可以轻松解码和查看。
但是,它是经过签名的,这意味着它具有基于其中所有信息和密钥生成的hash
。只有那些拥有密钥(用于对称哈希(或公钥(用于非对称哈希(的人才能确认令牌已被正确哈希处理,并且只有密钥的提供者(拥有密钥(才能创建有效的哈希。
这样做的作用是让您确信令牌是由您认为它创建的人/服务创建的,防止冒充等,因此允许您信任令牌中已进行claims
。如果该哈希因任何原因无效,您将立即拒绝该令牌,因为它很可能是伪造的。
请注意,正如@FlorentMorselli提到的,有一种叫做JWE的加密令牌。