使用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