您正在傳遞一個明文密鑰signWith
方法,這就是問題;
作爲每JJWT源代碼:
/**
331 * Signs the constructed JWT using the specified algorithm with the specified key, producing a JWS.
332 *
333 * <p>This is a convenience method: the string argument is first BASE64-decoded to a byte array and this resulting
334 * byte array is used to invoke {@link #signWith(SignatureAlgorithm, byte[])}.</p>
335 *
336 * @param alg the JWS algorithm to use to digitally sign the JWT, thereby producing a JWS.
337 * @param base64EncodedSecretKey the BASE64-encoded algorithm-specific signing key to use to digitally sign the
338 * JWT.
339 * @return the builder for method chaining.
340 */
341 JwtBuilder signWith(SignatureAlgorithm alg, String base64EncodedSecretKey);
342
343 /**
344 * Signs the constructed JWT using the specified algorithm with the specified key, producing a JWS.
345 *
346 * @param alg the JWS algorithm to use to digitally sign the JWT, thereby producing a JWS.
347 * @param key the algorithm-specific signing key to use to digitally sign the JWT.
348 * @return the builder for method chaining.
349 */
350 JwtBuilder signWith(SignatureAlgorithm alg, Key key);
傳遞包含該鍵的基-64串,或聲明Key對象並通過相關的信息來構建它。 如在例如:
byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary("c2VjcmV0");//this has to be base-64 encoded, it reads 'secret' if we de-encoded it
Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
//Let's set the JWT Claims
JwtBuilder builder = Jwts.builder().setId(id)
.setIssuedAt(now)
.setSubject(subject)
.setIssuer(issuer)
.signWith(signatureAlgorithm, signingKey);
的[與Java JJWT簽名生成的jwt.io調試失敗]可能的複製(http://stackoverflow.com/questions/38263680/generated-with-java-jjwt-signature-fails-at-jwt -io調試器) – pedrofb