java - DefaultJwtParser : how to merely decode the JWT?(无秘钥,无验证)

标签 java jwt jjwt

我不想使用 key (我没有)验证 JWT,我只想解码 JWT 并读取有效负载。这可以使用 jsonwebtoken.io:jjwt 来实现吗? API 中似乎缺少一个方法。

当然,我可以自己对 token 进行拆分和 Base64 解码,但感觉就像是 JWT 库所期望的最基本的功能;因此我怀疑我错过了一些东西。

最佳答案

试试下面的代码:

int i = jws.lastIndexOf('.')
String withoutSignature = jws.substring(0, i+1);
Jwt<Header,Claims> untrusted = Jwts.parser().parseClaimsJwt(withoutSignature);

您可以“砍掉”最后一个句点字符 ('.') 之后的最后一个“部分”,这是 JWS 签名。然后将该 JWT 读取为“正常”JWT(非 JWS)。

您要求的是忽略有效 JWS 上的签名并无论如何读取 JWT header 和正文。这违反了 JWS 规范,因此 JJWT 不支持它。

这是取自这个 github issue ,我想这和你面临的一样。

关于java - DefaultJwtParser : how to merely decode the JWT?(无秘钥,无验证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57408630/

相关文章:

python - Django Rest 框架 + JWT

java - JWT 在其网站上很容易被解码

java - 开关比较字符

java - 全图像适配器错误

java - 执行服务。所有线程完成后如何获得结果?

spring - 从Spring Boot Rest Controller 访问JWT token

javascript - 如何在客户端实现 JSON Web token - Node.js

java - 通过 JJWT 解密 JSON 字符串并删除引号 -Java

java - 如何从 io.jsonwebtoken.Claims 转换为 java.util.Map<String,Object>?

java - Sinch空指针问题