3
基于nimbus-jose-jwt Java库,我尝试创建以下JSON Web令牌(JWT)并使用JSON Web签名(JWS)使用字符串“secret”对SHA256进行散列签名。Java中生成的JSON Web签名产生无效签名
但是在生成序列化字符串并在jwt.io上测试后,我总是得到错误“Invalid Signature”。
当我尝试在服务器端使用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();
验证JWT当你在使用的秘诀是什么? – frasertweedale
@frasertweedale我正在使用第三方python库“pyjwt”,代码是:payload = jwt.decode(request.body,'secret',algorithms = ['HS256']) –
好吧,好吧在我看来你正在使用“秘密”的SHA-256摘要作为创建MAC的密钥,以及用于验证的普通旧“秘密”。它是否与'JWSSigner签名者=新MACSigner(“秘密”)一起工作? – frasertweedale