当前位置: 首页 > 面试题库 >

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

那谦
2023-03-14
问题内容

我正在使用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中提供密钥,而 secret 不是base64。当方法从解码base64
jjwtbyte[]使用的java转换器时,提供的字符串表示形式不同于 jwt.io上 使用的JavaScript解码器 __secr

您可以用

System.out.println(
                javax.xml.bind.DatatypeConverter.printBase64Binary(
                        javax.xml.bind.DatatypeConverter.parseBase64Binary("secret")));


 类似资料:
  • 我有一个默认ACL设置为private的bucket。我想生成预签名的url,并将其分发给用户,以便他们可以上传文件,上传后文件需要公开访问。 我可以生成预签名的url并上传文件,但文件始终保持私有。如果我在创建签名url时将ACL设置为“public-read”,那么getSignedUrl()正在生成签名url,但对该签名url的PUT请求会拒绝访问。 bucket可以包含私有或公共可访问的文

  • 最近我需要在Java中使用RSA对一个字符串进行签名,并在C++中验证签名。 在Java,现在我认为一切都是好的,我创建了public.keystore和private.keysore,可以成功地对数据进行签名和veify。但是当我试图用C++验证它时,它显示签名失败。 这是我的Java代码,在Java,我将数据签名到base64String,并将其保存在我的本地文件中,保存为“sig.dat”,

  • 我们使用java-jwt编写了小API。当我创建令牌并在代码中验证令牌时,Java正常工作。 创建RSA私钥和公钥。(参考其中一个测试用例) 使用算法创建令牌。RS256与私钥。 验证了相同的令牌,并获得了预期的输出。 然后向客户端提供公钥,我们开始使用生成的令牌调用他们的REST服务。客户端使用https://www.npmjs.com/package/jsonwebtoken来验证令牌。他们回

  • Strip build/build/intermediates/archiveintermediates/main/installationbuildproductslocation/applications/main.app/main cd/var/folders/zh/kb_4hqhn4kg1h0r5dp_6htcm0000gn/t/build9030811877552061486xxx/di

  • 在bucket里找到刚上传的Object 点击访问管理 生成预签名链接 过期时间是一个绝对时间,使用unix时间戳,单位是毫秒。预签名链接将会在指定的时间点失效 由于url里包含了签名信息,建议使用https 把生成的url复制到浏览器中地址栏中下载(测试)

  • 我正在尝试构建我的第一个签名APK以供发布,但出现了一些错误。看起来效果很好,但现在我就是无法生成APK。我做了研究,但什么也没找到。 Gradle版本:4.8,Android插件版本3.1.4,这是我的应用程序Gradle屏幕截图:link 这来自assembleDebug: 我曾经有过布局和不赞成使用的功能的其他问题,但我解决了它。其中一个就这样消失了,但我什么也没做:-) 我已经尝试过的事情