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

时间:2019-10-01 12:51:15

标签: javascript node.js jwt

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjIsImlhdCI6MTU2ODY1NjI1OX0.E2TNtWjqyPC-4myEom6leLJgE96ZlQOq0-mcBr3p5QU

如果我们将使用JsonWebToken从我的代码生成的令牌放置在Jwt.io站点中,即使我没有提供验证的秘密,该令牌也会立即被解码。 我不知道为什么会这样。有人可以解释原因吗?

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

1 个答案:

答案 0 :(得分:1)

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

未加密JSON Web令牌,它只是base64编码的,这意味着任何人都可以很容易地对其进行解码和查看。

然而,它已签名,这意味着它具有一个hash,它是根据其中的所有信息和一个密钥生成的。只有具有密钥(用于对称哈希)或公共密钥(用于非对称哈希)的用户才能确认令牌已正确哈希,并且只有密钥的提供者(拥有密钥)才可以创建令牌。有效哈希。

这样做是为了让您确信令牌是由您认为创建该令牌的人员/服务创建的,从而防止假冒等,因此,您可以信任在令牌中创建的claims令牌。如果该散列由于任何原因无效,您将立即基于最有可能伪造的令牌拒绝该令牌。

请注意,正如@FlorentMorselli所提到的,有一种名为JWE的加密令牌的想法。