gpt4 book ai didi

java - Java 中生成的 JSON Web 签名产生无效签名

转载 作者:行者123 更新时间:2023-12-02 09:36:34 33 4
gpt4 key购买 nike

基于nimbus-jose-jwt Java 库中,我尝试创建以下 JSON Web token (JWT),并使用 JSON Web 签名 (JWS) 使用哈希为 SHA256 的字符串“secret”对其进行签名。

但是在生成序列化字符串并在 jwt.io 处测试它之后,我总是收到错误“无效签名”。

当我尝试使用 Python 解码器在服务器端进行解码时,我也收到签名错误。可能出什么问题了?

byte[] bytes = new byte[32];
String message = "secret";
MessageDigest md = MessageDigest.getInstance("SHA-256");
bytes = md.digest(message.getBytes("UTF-8"));

JWSSigner signer = new MACSigner(bytes);

// Prepare JWT with claims set
JWTClaimsSet claimsSet = new JWTClaimsSet();
claimsSet.setSubject("alice");

SignedJWT signedJWT = new SignedJWT(new JWSHeader(JWSAlgorithm.HS256), claimsSet);

// Apply the HMAC
signedJWT.sign(signer);

// To serialize to compact form, produces something like
String s = signedJWT.serialize();

最佳答案

看起来您正在使用“secret”的 SHA-256 摘要作为创建 MAC 的 key ,并使用普通的旧“secret”进行验证。替换:

byte[] bytes = new byte[32];
String message = "secret";
MessageDigest md = MessageDigest.getInstance("SHA-256");
bytes = md.digest(message.getBytes("UTF-8"));

JWSSigner signer = new MACSigner(bytes);

与:

JWSSigner signer = new MACSigner("secret");

关于java - Java 中生成的 JSON Web 签名产生无效签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30217053/

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