在没有秘密的情况下解码 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 令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用库的情况下验证本机 Javascript 中的 Azure OAuth 访问 JWT 令牌?