/** * validate token * * @param token token * @return whether valid */ public boolean validateToken(String token) { try { Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token); return true; } catch (SignatureException e) { log.info("Invalid JWT signature."); log.trace("Invalid JWT signature trace: {}", e); } catch (MalformedJwtException e) { log.info("Invalid JWT token."); log.trace("Invalid JWT token trace: {}", e); } catch (ExpiredJwtException e) { log.info("Expired JWT token."); log.trace("Expired JWT token trace: {}", e); } catch (UnsupportedJwtException e) { log.info("Unsupported JWT token."); log.trace("Unsupported JWT token trace: {}", e); } catch (IllegalArgumentException e) { log.info("JWT token compact of handler are invalid."); log.trace("JWT token compact of handler are invalid trace: {}", e); } return false; } }
/** * 从token中获取JWT中的负载 */ private Claims getClaimsFromToken(String token) { Claims claims = null; try { claims = Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); } catch (Exception e) { LOGGER.info("JWT格式验证失败:{}",token); } return claims; }
private Claims getAllClaimsFromToken(String token) { return Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); }
/** * 解析token是否正确,不正确会报异常<br> */ public static void parseToken(String token) throws JwtException { Jwts.parser().setSigningKey(JwtConstants.SECRET).parseClaimsJws(token).getBody(); }
/** * 获取jwt的payload部分 */ public static Claims getClaimFromToken(String token) { return Jwts.parser() .setSigningKey(JwtConstants.SECRET) .parseClaimsJws(token) .getBody(); }
public Claims parseJWT(String jwt) { SecretKey key = jwtConfig.generalKey(); return Jwts.parser() .setSigningKey(key) .parseClaimsJws(jwt).getBody(); }
/** * Get auth Info * * @param token token * @return auth info */ public Authentication getAuthentication(String token) { /** * parse the payload of token */ Claims claims = Jwts.parser() .setSigningKey(secretKey) .parseClaimsJws(token) .getBody(); List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList((String) claims.get(AUTHORITIES_KEY)); User principal = new User(claims.getSubject(), "", authorities); return new UsernamePasswordAuthenticationToken(principal, "", authorities); }
private Jws<Claims> parseTokenFromBase64EncodedString(final String base64EncodedToken) throws JwtException { try { return Jwts.parser().setSigningKeyResolver(new SigningKeyResolverAdapter() { @Override public byte[] resolveSigningKeyBytes(JwsHeader header, Claims claims) { final String identity = claims.getSubject(); // Get the key based on the key id in the claims final Integer keyId = claims.get(KEY_ID_CLAIM, Integer.class); final Key key = keyService.getKey(keyId); // Ensure we were able to find a key that was previously issued by this key service for this user if (key == null || key.getKey() == null) { throw new UnsupportedJwtException("Unable to determine signing key for " + identity + " [kid: " + keyId + "]"); } return key.getKey().getBytes(StandardCharsets.UTF_8); } }).parseClaimsJws(base64EncodedToken); } catch (final MalformedJwtException | UnsupportedJwtException | SignatureException | ExpiredJwtException | IllegalArgumentException | AdministrationException e) { // TODO: Exercise all exceptions to ensure none leak key material to logs final String errorMessage = "Unable to validate the access token."; throw new JwtException(errorMessage, e); } }
while ( claims == null && tries++ < maxTries ) { try { claims = Jwts.parser().setSigningKey( publicKey ).parseClaimsJws( token );
Optional<Claims> decode(String token) { checkIsStarted(); Claims claims = null; try { claims = Jwts.parser() .setSigningKey(secretKey) .parseClaimsJws(token) .getBody(); requireNonNull(claims.getId(), "Token id hasn't been found"); requireNonNull(claims.getSubject(), "Token subject hasn't been found"); requireNonNull(claims.getExpiration(), "Token expiration date hasn't been found"); requireNonNull(claims.getIssuedAt(), "Token creation date hasn't been found"); return Optional.of(claims); } catch (ExpiredJwtException | SignatureException e) { return Optional.empty(); } catch (Exception e) { throw AuthenticationException.newBuilder() .setSource(Source.jwt()) .setLogin(claims == null ? null : claims.getSubject()) .setMessage(e.getMessage()) .build(); } }
JwtParser jwtParser = Jwts.parser() .setSigningKeyResolver(new SigningKeyResolver()
/** * Parses and validates JWT Token signature. * * @throws BadCredentialsException * @throws JwtExpiredTokenException * */ public Jws<Claims> parseClaims(String signingKey) { try { return Jwts.parser().setSigningKey(signingKey).parseClaimsJws(this.token); } catch (UnsupportedJwtException | MalformedJwtException | IllegalArgumentException | SignatureException ex) { logger.error("Invalid JWT Token", ex); throw new BadCredentialsException("Invalid JWT token: ", ex); } catch (ExpiredJwtException expiredEx) { logger.info("JWT Token is expired", expiredEx); throw new JwtExpiredTokenException(this, "JWT Token expired", expiredEx); } }
public static Map<String,String> validateToken(String token) { if (token != null) { HashMap<String, String> map = new HashMap<String, String>(); Map<String,Object> body = Jwts.parser() .setSigningKey(SECRET) .parseClaimsJws(token.replace(TOKEN_PREFIX, "")) .getBody(); String id = String.valueOf(body.get("id")); String user = (String) (body.get("user")); map.put("id", id); map.put("user", user); if(StringUtils.isEmpty(user)) { throw new PermissionException("user is error, please check"); } return map; } else { throw new PermissionException("token is error, please check"); } }
/** * 根据请求heard中的token获取用户角色 * * @param httpServletRequest request * @return 角色名 */ public static List<String> getRole(HttpServletRequest httpServletRequest) { String token = getToken(httpServletRequest); String key = Base64.getEncoder().encodeToString(CommonConstant.SIGN_KEY.getBytes()); Claims claims = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody(); List<String> roleNames = (List<String>) claims.get("authorities"); return roleNames; }
/** * 根据header中的token获取用户ID * * @param httpServletRequest * @return 用户ID */ public static Integer getUserId(HttpServletRequest httpServletRequest) { String token = getToken(httpServletRequest); String key = Base64.getEncoder().encodeToString(CommonConstant.SIGN_KEY.getBytes()); Claims claims = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody(); Integer userId = (Integer) claims.get("userId"); return userId; }
/** * 获得 Claims * * @param token Token * @return Claims */ private Claims getClaimsFromToken(String token) { Claims claims; try { claims = Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); } catch (Exception e) { LOGGER.warn("getClaimsFromToken exception", e); claims = null; } return claims; }
Claims claims = Jwts.parser() .setSigningKey(SecurityConstant.JWT_SIGN_KEY) .parseClaimsJws(header.replace(SecurityConstant.TOKEN_SPLIT, ""))
/** * 检查Token是否合法 * @param token * @return JWTResult */ public JWTResult checkToken(String token) { try { Claims claims = Jwts.parser().setSigningKey(pubKey).parseClaimsJws(token).getBody(); String sub = claims.get("sub", String.class); return new JWTResult(true, sub, "合法请求", ResponseCode.SUCCESS_CODE.getCode()); } catch (ExpiredJwtException e) { // 在解析JWT字符串时,如果‘过期时间字段’已经早于当前时间,将会抛出ExpiredJwtException异常,说明本次请求已经失效 return new JWTResult(false, null, "token已过期", ResponseCode.TOKEN_TIMEOUT_CODE.getCode()); } catch (SignatureException e) { // 在解析JWT字符串时,如果密钥不正确,将会解析失败,抛出SignatureException异常,说明该JWT字符串是伪造的 return new JWTResult(false, null, "非法请求", ResponseCode.NO_AUTH_CODE.getCode()); } catch (Exception e) { return new JWTResult(false, null, "非法请求", ResponseCode.NO_AUTH_CODE.getCode()); } }
/** * 从token中取出用户 */ public TokenUserDTO parse(String token) { Claims claims = Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); TokenUserDTO userDTO = new TokenUserDTO(); userDTO.setId(NumberUtils.toLong(claims.getId())); userDTO.setAvatar(claims.get("avatar",String.class)); userDTO.setUsername(claims.get("username",String.class)); userDTO.setEmail(claims.get("email",String.class)); userDTO.setRoles((List<String>) claims.get("roles")); return userDTO; }
private Claims getAllClaimsFromToken(String token) { return Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); }