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