JwtUtil.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package com.uas.utils;
  2. import com.uas.core.support.GetProperties;
  3. import io.jsonwebtoken.Claims;
  4. import io.jsonwebtoken.JwtBuilder;
  5. import io.jsonwebtoken.Jwts;
  6. import io.jsonwebtoken.SignatureAlgorithm;
  7. import javax.crypto.spec.SecretKeySpec;
  8. import javax.xml.bind.DatatypeConverter;
  9. import java.security.Key;
  10. import java.util.Date;
  11. import java.util.Map;
  12. public class JwtUtil {
  13. private static Map<String,String> tokenConfig = GetProperties.getAllProperty();
  14. private static String base64Security = tokenConfig.get("SECURITY_KEY");
  15. public static String createJWT(String username, String password) {
  16. SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
  17. long nowMillis = System.currentTimeMillis();
  18. Date now = new Date(nowMillis);
  19. // 生成签名密钥
  20. byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(base64Security);
  21. Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
  22. // 添加构成JWT的参数
  23. JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT")
  24. .claim("username", username)
  25. .claim("password", password)
  26. .signWith(signatureAlgorithm, signingKey);
  27. // 添加Token过期时间
  28. long expMillis = nowMillis + Long.parseLong(tokenConfig.get("KEEP"));
  29. Date exp = new Date(expMillis);
  30. builder.setExpiration(exp).setNotBefore(now);
  31. // 生成JWT
  32. return builder.compact();
  33. }
  34. public static Claims parseJWT(String jsonWebToken) {
  35. try {
  36. Claims claims = Jwts.parser().setSigningKey(DatatypeConverter.parseBase64Binary(base64Security))
  37. .parseClaimsJws(jsonWebToken).getBody();
  38. return claims;
  39. } catch (Exception ex) {
  40. return null;
  41. }
  42. }
  43. }