123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package com.shawn.util;
- import io.jsonwebtoken.Jwts;
- import io.jsonwebtoken.SignatureAlgorithm;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import javax.crypto.spec.SecretKeySpec;
- import javax.xml.bind.DatatypeConverter;
- import java.security.Key;
- import java.util.Map;
- public class JavaWebToken {
- private static Logger log = LoggerFactory.getLogger(JavaWebToken.class);
- //该方法使用HS256算法和Secret:bankgl生成signKey
- private static Key getKeyInstance() {
- //We will sign our JavaWebToken with our ApiKey secret
- SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
- byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary("bankgl");
- Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
- return signingKey;
- }
- //使用HS256签名算法和生成的signingKey最终的Token,claims中是有效载荷
- public static String createJavaWebToken(Map<String, Object> claims) {
- return Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS256, getKeyInstance()).compact();
- }
- //解析Token,同时也能验证Token,当验证失败返回null
- public static Map<String, Object> parserJavaWebToken(String jwt) {
- try {
- Map<String, Object> jwtClaims =
- Jwts.parser().setSigningKey(getKeyInstance()).parseClaimsJws(jwt).getBody();
- return jwtClaims;
- } catch (Exception e) {
- log.error("json web token verify failed");
- return null;
- }
- }
- }
|