gpt4 book ai didi

java - 使用 Java JJWT 签名生成在 jwt.io 调试器中失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:14:27 26 4
gpt4 key购买 nike

我在 servlet 上使用 jjwt Java 库在服务器端生成 jwt,下面的代码片段直接来自 jjwt GitHub 页面 https://github.com/jwtk/jjwt生成并打印出这个 token 。

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 的调试器上验证此 token 时,它未能通过签名检查。 Both checking and unchecking secret base64 encoded didn't work

我是否错误地使用了库?

最佳答案

尝试使用 secr 并检查 base64 选项:)

这是由于.signWith(SignatureAlgorithm.HS256, "secret")。它由 DefaultJwtBuilder 实现类

public JwtBuilder signWith(SignatureAlgorithm alg, String base64EncodedSecretKey) 

此方法假定您提供的是 base64 key ,并且 secret 不是 base64。当方法从 base64 解码为 byte[] 时,jjwt 使用的 java 转换器提供字符串 secr 这与 jwt.io

中使用的 JavaScript 解码器不同

你可以测试自己

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

关于java - 使用 Java JJWT 签名生成在 jwt.io 调试器中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38263680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com