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

Posted

技术标签:

【中文标题】在没有秘密的情况下解码 JWT 令牌【英文标题】:Decoding JWT tokens without the secret 【发布时间】:2015-10-02 16:42:33 【问题描述】:

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

【问题讨论】:

搜索JWE (JSON Web Encryption),这是一种以加密方式表示 JWT 的方式。 【参考方案1】:

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

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

当使用公钥进行加密时,它可用于向除预期收件人之外的任何人隐藏内容。结果是一个 JSON Web Encryption 对象。请注意,它将是用于加密 JWT 的收件人的公钥。显然这就是你要找的。​​p>

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

【讨论】:

以上是关于在没有秘密的情况下解码 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章

JWT 令牌解码

如何在不使用库的情况下验证本机 Javascript 中的 Azure OAuth 访问 JWT 令牌?

如何在没有身份验证的情况下创建 JWT 令牌

如何在没有密钥或没有验证的情况下解码 php/laravel 中的 jwt?

是否可以在没有刷新令牌的情况下检查 JWT 有效性?

如何解码 Java 生成的 Node.js 中的 jwt 令牌?