我想生产JWT并用HMAC_SHA256签名.对于那个任务,我必须使用jose4j.我试图基于秘密生成密钥:
SecretKeySpec key = new SecretKeySpec(("secret").getBytes("UTF-8"), AlgorithmIdentifiers.HMAC_SHA512);
Run Code Online (Sandbox Code Playgroud)
但是它会生成40位密钥,而使用HMAC_SHA256签名需要512位密钥.
我需要在 mi API 中使用 JWT,IDE 告诉我 .signWith() 方法已弃用。到目前为止,我使用 @Deprecated 注释,但我认为这不是很好的做法。
这是我的示例代码:
@Deprecated
public String generateToken(UserDetails userDetails) {
return Jwts.builder().setSubject(userDetails.getUsername()).setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 10))
.signWith(SignatureAlgorithm.HS256, KEY).compact();
}
Run Code Online (Sandbox Code Playgroud)