使用Java JJWT签名生成的文件在jwt.io调试器上失败

我正在使用jjwt Java库在Servlet上生成jwt的服务器端,下面的代码片段直接来自jjwt

GitHub页面https://github.com/jwtk/jjwt,它会生成并打印出此令牌。

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKb2UifQ.XIKER3owR8BS3Krhsksg9INh9VBSejdn_qN-ONtPans

String compactJws = Jwts.builder()

.setSubject("Joe")

.signWith(SignatureAlgorithm.HS256, "secret")

.compact();

PrintWriter out = response.getWriter();

out.println(compactJws);

但是,当我尝试在jwt.io的调试器上验证此令牌时,它未通过签名检查。

检查和取消检查秘密base64编码均无效

我使用图书馆有误吗?

回答:

尝试secr并检查base64选项:)

这是由于.signWith(SignatureAlgorithm.HS256,

"secret")。它由DefaultJwtBuilder类实现

public JwtBuilder signWith(SignatureAlgorithm alg, String base64EncodedSecretKey)

此方法假定您在base64中提供密钥,而 。当方法从解码base64

jjwtbyte[]使用的java转换器时,提供的字符串表示形式不同于 使用的JavaScript解码器 __secr


您可以用

System.out.println(

javax.xml.bind.DatatypeConverter.printBase64Binary(

javax.xml.bind.DatatypeConverter.parseBase64Binary("secret")));

以上是 使用Java JJWT签名生成的文件在jwt.io调试器上失败 的全部内容, 来源链接: utcz.com/qa/401155.html

回到顶部