在没有秘密的情况下解码 JWT 令牌

Decoding JWT tokens without the secret

我用 JWT 的私钥创建了一个令牌,但是当我尝试在 http://kjur.github.io/jsjws/tool_jwt.html 上对其进行解码时,我发现令牌可以在没有给定任何密钥的情况下解码。那么 JWT 令牌只是一个签名是正确的吗?如何在没有密钥的情况下防止令牌被解码?

JWT 可以通过两种方式使用 public/private 密钥:签名和加密。

如果您使用私钥进行签名,它允许接收者识别 JWT 的发送者和消息的完整性,但不会向其他人隐藏其内容(机密性)。请注意,发送者的私钥将用于签署 JWT 并生成 JSON Web 签名 (JWS) 对象。显然这适用于您正在查看的 JWT。

当使用 public 密钥进行加密时,它可用于对预期收件人以外的任何人隐藏内容。结果是 JSON Web 加密对象。请注意,它将是用于加密 JWT 的收件人的 public 密钥。显然这就是您要找的。

参见:http://jose.readthedocs.org/en/latest/