DefaultJwtParser:如何只解码 JWT? (没有密钥,没有验证)
DefaultJwtParser: how to merely decode the JWT? (no secret key, no validation)
我不想使用密钥(我没有)验证 JWT,我只想解码 JWT 并读取有效负载。这可以使用 jsonwebtoken.io:jjwt 来实现吗? API.
中似乎缺少一种方法
当然,我可以自己对令牌进行拆分和 Base64 解码,但感觉就像是 JWT 库所期望的最基本的功能;因此我怀疑我遗漏了什么。
试试下面的代码:
int i = jws.lastIndexOf('.')
String withoutSignature = jws.substring(0, i+1);
Jwt<Header,Claims> untrusted = Jwts.parser().parseClaimsJwt(withoutSignature);
您可以 'chop off' 最后一个 'part' 最后一个句点字符 ('.') 之后的最后一个 'part',即 JWS signature.And 然后将该 JWT 读取为 'normal'智威汤逊 (non-JWS).
您要求的是忽略有效 JWS 上的签名并阅读 JWT header 和 body。这违反了 JWS 规范,因此 JJWT 不支持它。
这是取自这个github issue,我猜这和你面对的是一样的。
也许改用 Auth0 库?
DecodedJWT jwt = JWT.decode(token);
jwt.getToken();
依赖关系:
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.8.3</version>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>jwks-rsa</artifactId>
<version>0.9.0</version>
</dependency>
例子取自https://medium.com/trabe/validate-jwt-tokens-using-jwks-in-java-214f7014b5cf
我不想使用密钥(我没有)验证 JWT,我只想解码 JWT 并读取有效负载。这可以使用 jsonwebtoken.io:jjwt 来实现吗? API.
中似乎缺少一种方法当然,我可以自己对令牌进行拆分和 Base64 解码,但感觉就像是 JWT 库所期望的最基本的功能;因此我怀疑我遗漏了什么。
试试下面的代码:
int i = jws.lastIndexOf('.')
String withoutSignature = jws.substring(0, i+1);
Jwt<Header,Claims> untrusted = Jwts.parser().parseClaimsJwt(withoutSignature);
您可以 'chop off' 最后一个 'part' 最后一个句点字符 ('.') 之后的最后一个 'part',即 JWS signature.And 然后将该 JWT 读取为 'normal'智威汤逊 (non-JWS).
您要求的是忽略有效 JWS 上的签名并阅读 JWT header 和 body。这违反了 JWS 规范,因此 JJWT 不支持它。
这是取自这个github issue,我猜这和你面对的是一样的。
也许改用 Auth0 库?
DecodedJWT jwt = JWT.decode(token);
jwt.getToken();
依赖关系:
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.8.3</version>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>jwks-rsa</artifactId>
<version>0.9.0</version>
</dependency>
例子取自https://medium.com/trabe/validate-jwt-tokens-using-jwks-in-java-214f7014b5cf