java类io.jsonwebtoken.Jws的实例源码

JwtAuthenticationProvider.java 文件源码 项目:OpenLRW 阅读 29 收藏 0 点赞 0 评论 0
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
    RawAccessJwtToken rawAccessToken = (RawAccessJwtToken) authentication.getCredentials();

    Jws<Claims> jwsClaims = rawAccessToken.parseClaims(jwtSettings.getTokenSigningKey());
    String orgId = jwsClaims.getBody().getSubject();
    String tenantId = jwsClaims.getBody().get("tenant", String.class);
    List<String> scopes = jwsClaims.getBody().get("scopes", List.class);
    List<GrantedAuthority> authorities = scopes.stream()
            .map(authority -> new SimpleGrantedAuthority(authority))
            .collect(Collectors.toList());

    UserContext context = UserContext.create(tenantId, orgId, authorities);

    return new JwtAuthenticationToken(context, context.getAuthorities());
}
JwtService.java 文件源码 项目:nifi-registry 阅读 42 收藏 0 点赞 0 评论 0
public String getAuthenticationFromToken(final String base64EncodedToken) throws JwtException {
    // The library representations of the JWT should be kept internal to this service.
    try {
        final Jws<Claims> jws = parseTokenFromBase64EncodedString(base64EncodedToken);

        if (jws == null) {
            throw new JwtException("Unable to parse token");
        }

        // Additional validation that subject is present
        if (StringUtils.isEmpty(jws.getBody().getSubject())) {
            throw new JwtException("No subject available in token");
        }

        // TODO: Validate issuer against active IdentityProvider?
        if (StringUtils.isEmpty(jws.getBody().getIssuer())) {
            throw new JwtException("No issuer available in token");
        }
        return jws.getBody().getSubject();
    } catch (JwtException e) {
        logger.debug("The Base64 encoded JWT: " + base64EncodedToken);
        final String errorMessage = "There was an error validating the JWT";
        logger.error(errorMessage, e);
        throw e;
    }
}
JwtService.java 文件源码 项目:nifi-registry 阅读 34 收藏 0 点赞 0 评论 0
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 String keyId = claims.get(KEY_ID_CLAIM, String.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 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);
    }
}
JwtTokenFactory.java 文件源码 项目:iotplatform 阅读 26 收藏 0 点赞 0 评论 0
public SecurityUser parseRefreshToken(RawAccessJwtToken rawAccessToken) {
  Jws<Claims> jwsClaims = rawAccessToken.parseClaims(settings.getTokenSigningKey());
  Claims claims = jwsClaims.getBody();
  String subject = claims.getSubject();
  List<String> scopes = claims.get(SCOPES, List.class);
  if (scopes == null || scopes.isEmpty()) {
    throw new IllegalArgumentException("Refresh Token doesn't have any scopes");
  }
  if (!scopes.get(0).equals(Authority.REFRESH_TOKEN.name())) {
    throw new IllegalArgumentException("Invalid Refresh Token scope");
  }
  boolean isPublic = claims.get(IS_PUBLIC, Boolean.class);
  UserPrincipal principal = new UserPrincipal(isPublic ? UserPrincipal.Type.PUBLIC_ID : UserPrincipal.Type.USER_NAME,
      subject);
  SecurityUser securityUser = new SecurityUser(new UserId(UUID.fromString(claims.get(USER_ID, String.class))));
  securityUser.setUserPrincipal(principal);
  return securityUser;
}
LoginControllerIT.java 文件源码 项目:kanbanboard 阅读 21 收藏 0 点赞 0 评论 0
@Test
public void loginSuccessfullAdmin() throws Exception {

    final UserLoginDto user = new UserLoginDto("admin", "admin");

    final MvcResult result = mockMvc.perform(post(PREFIX + "/login")
            .contentType(contentType).content(this.json(user)))
            .andExpect(status().isOk())
            .andExpect(content().contentType(contentType))
            .andExpect(jsonPath("token").exists())
            .andReturn();

    final String body = result.getResponse().getContentAsString();

    final ObjectMapper mapper = new ObjectMapper();
    final JsonNode node = mapper.readTree(body);
    final String token = node.get("token").asText();

    log.debug("Token: " + token);

    final Jws<Claims> claims = Jwts.parser()
            .setSigningKey(TEST_KEY)
            .parseClaimsJws(token);

    assertEquals("admin", claims.getBody().getSubject());
}
LoginControllerIT.java 文件源码 项目:kanbanboard 阅读 22 收藏 0 点赞 0 评论 0
@Test
public void loginSuccessfullUser() throws Exception {

    final UserLoginDto user = new UserLoginDto("user", "user");

    final MvcResult result = mockMvc.perform(post(PREFIX + "/login")
            .contentType(contentType).content(this.json(user)))
            .andExpect(status().isOk())
            .andExpect(content().contentType(contentType))
            .andExpect(jsonPath("token").exists())
            .andReturn();

    final String body = result.getResponse().getContentAsString();

    final ObjectMapper mapper = new ObjectMapper();
    final JsonNode node = mapper.readTree(body);
    final String token = node.get("token").asText();

    log.debug("Token: " + token);

    final Jws<Claims> claims = Jwts.parser()
            .setSigningKey(TEST_KEY)
            .parseClaimsJws(token);

    assertEquals("user", claims.getBody().getSubject());
}
JsonWebTokenAuthenticationService.java 文件源码 项目:unity 阅读 25 收藏 0 点赞 0 评论 0
@Override
public Authentication authenticate(final HttpServletRequest request) {
    final String token = request.getHeader(authHeaderName);
    final Optional<Jws<Claims>> tokenData = parseToken(token);

    if (tokenData.isPresent()) {
        try {
            final User user = getUserFromToken(tokenData.get());

            return new UserAuthentication(user);
        } catch (UserNotFoundException e) {
            log.warn(e.getMessage());
        }
    }

    return null;
}
HonoSaslAuthenticatorFactory.java 文件源码 项目:hono 阅读 33 收藏 0 点赞 0 评论 0
@Override
public void authenticate(final JsonObject authRequest, final Handler<AsyncResult<HonoUser>> authenticationResultHandler) {

    final DeliveryOptions options = new DeliveryOptions().setSendTimeout(AUTH_REQUEST_TIMEOUT_MILLIS);
    vertx.eventBus().send(AuthenticationConstants.EVENT_BUS_ADDRESS_AUTHENTICATION_IN, authRequest, options, reply -> {
        if (reply.succeeded()) {
            JsonObject result = (JsonObject) reply.result().body();
            String token = result.getString(AuthenticationConstants.FIELD_TOKEN);
            log.debug("received token [length: {}] in response to authentication request", token.length());
            try {
                Jws<Claims> expandedToken = tokenValidator.expand(result.getString(AuthenticationConstants.FIELD_TOKEN));
                authenticationResultHandler.handle(Future.succeededFuture(new HonoUserImpl(expandedToken, token)));
            } catch (JwtException e) {
                authenticationResultHandler.handle(Future.failedFuture(e));
            }
        } else {
            authenticationResultHandler.handle(Future.failedFuture(reply.cause()));
        }
    });

}
PortalRequestService.java 文件源码 项目:Soffit 阅读 23 收藏 0 点赞 0 评论 0
public PortalRequest parsePortalRequest(String portalRequestToken) {

        final Jws<Claims> claims = parseEncrypteToken(portalRequestToken, PortalRequest.class);

        final String username = claims.getBody().getSubject();

        // Properties
        @SuppressWarnings("unchecked")
        final Map<String,String> properties = (Map<String, String>) claims.getBody().get(JwtClaims.PROPERTIES.getName());

        // Attributes
        @SuppressWarnings("unchecked")
        final Map<String,List<String>> attributes = (Map<String, List<String>>) claims.getBody().get(JwtClaims.ATTRIBUTES.getName());

        // Parameters
        @SuppressWarnings("unchecked")
        final Map<String,List<String>> parameters = (Map<String, List<String>>) claims.getBody().get(JwtClaims.PARAMETERS.getName());

        PortalRequest rslt = new PortalRequest(portalRequestToken, properties, attributes, parameters);
        logger.debug("Produced the following PortalRequest for user '{}':  {}", username, rslt);
        return rslt;

    }
JwtServiceImpl.java 文件源码 项目:adeptj-modules 阅读 28 收藏 0 点赞 0 评论 0
/**
 * {@inheritDoc}
 */
@Override
public boolean verifyJwt(String jwt) {
    boolean verified = false;
    try {
        Assert.hasText(jwt, "JWT can't be null or empty!!");
        JwtParser jwtParser = Jwts.parser().requireIssuer(this.jwtConfig.issuer());
        this.setSigningKey(jwtParser);
        Jws<Claims> claimsJws = jwtParser.parseClaimsJws(jwt);
        verified = !this.jwtConfig.validateClaims() ||
                this.claimsValidator != null && this.claimsValidator.validate(claimsJws.getBody());
    } catch (RuntimeException ex) {
        // For reducing noise in the logs, set this config to false.
        if (this.jwtConfig.printJwtExceptionTrace()) {
            LOGGER.error(ex.getMessage(), ex);
        } else {
            LOGGER.error(ex.getMessage());
        }
    }
    return verified;
}
JwtUtil.java 文件源码 项目:booktrackr 阅读 29 收藏 0 点赞 0 评论 0
public JwtAuthenticationToken tokenFromStringJwt(String rawJwt) {
    DefaultJwtParser parser = ((DefaultJwtParser) Jwts.parser());
    parser.setSigningKey(signingSecret);

    try {
        Jws<Claims> jws = parser.parseClaimsJws(rawJwt);
        Claims claims = jws.getBody();


        UUID userId = UUID.fromString((String) claims.get("user_id"));
        String email = ((String) claims.get("email"));
        Collection<? extends GrantedAuthority> roles = parseRolesFromClaims(claims);

        return new JwtAuthenticationToken(userId, email, roles);
    } catch (Exception e) {
        log.info(String.format("Exception occurred parsing JWT [%s].\nException message: %s", rawJwt, e.getMessage()));
        return null;
    }
}
JwtTokenFactory.java 文件源码 项目:thingsboard 阅读 27 收藏 0 点赞 0 评论 0
public SecurityUser parseRefreshToken(RawAccessJwtToken rawAccessToken) {
    Jws<Claims> jwsClaims = rawAccessToken.parseClaims(settings.getTokenSigningKey());
    Claims claims = jwsClaims.getBody();
    String subject = claims.getSubject();
    List<String> scopes = claims.get(SCOPES, List.class);
    if (scopes == null || scopes.isEmpty()) {
        throw new IllegalArgumentException("Refresh Token doesn't have any scopes");
    }
    if (!scopes.get(0).equals(Authority.REFRESH_TOKEN.name())) {
        throw new IllegalArgumentException("Invalid Refresh Token scope");
    }
    boolean isPublic = claims.get(IS_PUBLIC, Boolean.class);
    UserPrincipal principal = new UserPrincipal(isPublic ? UserPrincipal.Type.PUBLIC_ID : UserPrincipal.Type.USER_NAME, subject);
    SecurityUser securityUser = new SecurityUser(new UserId(UUID.fromString(claims.get(USER_ID, String.class))));
    securityUser.setUserPrincipal(principal);
    return securityUser;
}
RSA256TokenParser.java 文件源码 项目:ameba-lib 阅读 26 收藏 0 点赞 0 评论 0
/**
 * {@inheritDoc}
 */
@Override
public Jws<Claims> parse(String token, Asymmetric issuer) {

    Jws<Claims> jws;
    try {
        Jwk jwk = jwkProvider.get(issuer.getKID());
        byte[] publicKeyBytes = jwk.getPublicKey().getEncoded();
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey pubKey = keyFactory.generatePublic(keySpec);
        jws = Jwts.parser()
                .setAllowedClockSkewSeconds(issuer.getSkewSeconds())
                .setSigningKey(pubKey)
                .parseClaimsJws(token);
        return jws;
    } catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
        throw new InvalidTokenException(e.getMessage());
    }
}
CookieParser.java 文件源码 项目:mangooio 阅读 23 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
public boolean hasValidSessionCookie() {
    decrypt();

    boolean valid = false;
    if (StringUtils.isNotBlank(this.value)) {
        try {
            Jws<Claims> jwsClaims = Jwts.parser()
                    .setSigningKey(this.secret)
                    .parseClaimsJws(this.value);

            Claims claims = jwsClaims.getBody();
            Date expiration = claims.getExpiration();
            if (expiration != null) {
                this.sessionValues = claims.get(ClaimKey.DATA.toString(), Map.class);
                this.authenticityToken = claims.get(ClaimKey.AUTHENTICITY.toString(), String.class); 
                this.expiresDate = dateToLocalDateTime(expiration); 
                valid = true;
            } 
        } catch (Exception e) { //NOSONAR
            LOG.error("Failed to parse JWS for seesion cookie", e);
        }
    }

    return valid;
}
CookieParser.java 文件源码 项目:mangooio 阅读 25 收藏 0 点赞 0 评论 0
public boolean hasValidAuthenticationCookie() {
    decrypt();

    boolean valid = false;
    if (StringUtils.isNotBlank(this.value)) {
        try {
            Jws<Claims> jwsClaims = Jwts.parser()
                    .setSigningKey(this.secret)
                    .parseClaimsJws(this.value);

            Claims claims = jwsClaims.getBody();
            Date expiration = claims.getExpiration();
            if (expiration != null) {
                this.authenticatedUser = claims.getSubject();
                this.twoFactor = claims.get(ClaimKey.TWO_FACTOR.toString(), Boolean.class);
                this.expiresDate = dateToLocalDateTime(expiration);
                valid = true;                        
            }  
        } catch (Exception e) { //NOSONAR
            LOG.error("Failed to parse JWS for authentication cookie", e);
        }
    }

    return valid;
}
SecurityServiceImpl.java 文件源码 项目:codekvast 阅读 26 收藏 0 点赞 0 评论 0
private Authentication toAuthentication(String token) throws AuthenticationException {

        if (token == null || settings.isDemoMode()) {
            return null;
        }

        int pos = token.startsWith(BEARER_) ? BEARER_.length() : 0;

        try {
            Jws<Claims> claims = Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(token.substring(pos));

            return new PreAuthenticatedAuthenticationToken(
                Long.valueOf(claims.getBody().getSubject()),
                WebappCredentials.builder()
                                 .externalId(claims.getBody().getId())
                                 .customerName(claims.getBody().get(JWT_CLAIM_CUSTOMER_NAME, String.class))
                                 .email(claims.getBody().get(JWT_CLAIM_EMAIL, String.class))
                                 .source(claims.getBody().get(JWT_CLAIM_SOURCE, String.class))
                                 .build(),
                USER_AUTHORITY);
        } catch (Exception e) {
            logger.debug("Failed to authenticate token: " + e);
            return null;
        }
    }
JsonWebTokenAuthenticationService.java 文件源码 项目:Spring-Boot-MongoDB-JWT 阅读 28 收藏 0 点赞 0 评论 0
@Override
public Authentication authenticate(final HttpServletRequest request) {
    final String token = request.getHeader(SecurityConstants.AUTH_HEADER_NAME);
    final Jws<Claims> tokenData = parseToken(token);
    if (tokenData != null) {
        User user = getUserFromToken(tokenData);
        if (user != null) {
            return new UserAuthentication(user);
        }
    }
    return null;
}
JsonWebTokenAuthenticationService.java 文件源码 项目:Spring-Boot-MongoDB-JWT 阅读 25 收藏 0 点赞 0 评论 0
private Jws<Claims> parseToken(final String token) {
    if (token != null) {
        try {
            return Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token);
        } catch (ExpiredJwtException | UnsupportedJwtException | MalformedJwtException
                | SignatureException | IllegalArgumentException e) {
            return null;
        }
    }
    return null;
}
JsonWebTokenAuthenticationService.java 文件源码 项目:Spring-Boot-MongoDB-JWT 阅读 22 收藏 0 点赞 0 评论 0
private User getUserFromToken(final Jws<Claims> tokenData) {
    try {
        return (User) userDetailsService
                .loadUserByUsername(tokenData.getBody().get("username").toString());
    } catch (UsernameNotFoundException e) {
        throw new UserNotFoundException("User "
                + tokenData.getBody().get("username").toString() + " not found");
    }
}
RawAccessJwtToken.java 文件源码 项目:OpenLRW 阅读 31 收藏 0 点赞 0 评论 0
/**
 * 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);
    }
}
RefreshToken.java 文件源码 项目:OpenLRW 阅读 23 收藏 0 点赞 0 评论 0
/**
 * Creates and validates Refresh token 
 * 
 * @param token
 * @param signingKey
 * 
 * @throws BadCredentialsException
 * @throws JwtExpiredTokenException
 * 
 * @return
 */
public static Optional<RefreshToken> create(RawAccessJwtToken token, String signingKey) {
    Jws<Claims> claims = token.parseClaims(signingKey);

    List<String> scopes = claims.getBody().get("scopes", List.class);
    if (scopes == null || scopes.isEmpty() 
            || !scopes.stream().filter(scope -> Scopes.REFRESH_TOKEN.authority().equals(scope)).findFirst().isPresent()) {
        return Optional.empty();
    }

    return Optional.of(new RefreshToken(claims));
}
JwtService.java 文件源码 项目:product-management-system 阅读 39 收藏 0 点赞 0 评论 0
private Authentication parseToken(final String token) {
    final Jws<Claims> tokenData = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token);
    final Authentication jwtAuth = getAuthenticationFromToken(tokenData);

    if (Objects.isNull(jwtAuth)) {
        return null;
    }

    return validatePasswordFromToken(tokenData, jwtAuth);
}
JwtService.java 文件源码 项目:product-management-system 阅读 29 收藏 0 点赞 0 评论 0
private Authentication validatePasswordFromToken(final Jws<Claims> tokenData, final Authentication jwtAuth) {
    final String tokenPassword = tokenData.getBody().get("password").toString();
    if(tokenPassword.equals(jwtAuth.getCredentials())) {
        jwtAuth.setAuthenticated(true);
        return jwtAuth;
    }
    return null;
}
TokenServiceTest.java 文件源码 项目:product-management-system 阅读 22 收藏 0 点赞 0 评论 0
private String modifyTokenExpirationTime(final String token) {
    final Jws<Claims> tokenData = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token);
    final JwtBuilder jwtBuilder = Jwts.builder();
    final Calendar calendar = Calendar.getInstance();

    jwtBuilder.setClaims(tokenData.getBody());
    calendar.add(Calendar.MILLISECOND, 1);
    jwtBuilder.setExpiration(calendar.getTime());
    return jwtBuilder.signWith(SignatureAlgorithm.HS512, secretKey).compact();
}
TokenServiceTest.java 文件源码 项目:product-management-system 阅读 30 收藏 0 点赞 0 评论 0
private void validateTokenData(final String token, final User user) {
    final Jws<Claims> tokenData = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token);
    final String username = tokenData.getBody().get("username").toString();
    final String password = tokenData.getBody().get("password").toString();
    final User userFromToken = userService.findByUsername(username);

    assertEquals(user.getUsername(), userFromToken.getUsername());
    assertEquals(user.getPassword(), password);
}
RawAccessJwtToken.java 文件源码 项目:infotaf 阅读 27 收藏 0 点赞 0 评论 0
/**
 * 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);
    }
}
RefreshToken.java 文件源码 项目:infotaf 阅读 24 收藏 0 点赞 0 评论 0
/**
 * Creates and validates Refresh token 
 * 
 * @param token
 * @param signingKey
 * 
 * @throws BadCredentialsException
 * @throws JwtExpiredTokenException
 * 
 * @return
 */
public static Optional<RefreshToken> create(RawAccessJwtToken token, String signingKey) {
    Jws<Claims> claims = token.parseClaims(signingKey);

    List<String> scopes = claims.getBody().get("scopes", List.class);
    if (scopes == null || scopes.isEmpty() 
            || !scopes.stream().filter(scope -> Scopes.REFRESH_TOKEN.authority().equals(scope)).findFirst().isPresent()) {
        return Optional.empty();
    }

    return Optional.of(new RefreshToken(claims));
}
JwtAuthenticationProvider.java 文件源码 项目:infotaf 阅读 34 收藏 0 点赞 0 评论 0
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
    RawAccessJwtToken rawAccessToken = (RawAccessJwtToken) authentication.getCredentials();

    Jws<Claims> jwsClaims = rawAccessToken.parseClaims(AppConfig.prop.getProperty("security.tokenSigningKey"));
    String subject = jwsClaims.getBody().getSubject();
    List<String> scopes = jwsClaims.getBody().get("scopes", List.class);
    List<GrantedAuthority> authorities = scopes.stream()
            .map(authority -> new SimpleGrantedAuthority(authority))
            .collect(Collectors.toList());

    UserContext context = UserContext.create(subject, authorities);

    return new JwtAuthenticationToken(context, context.getAuthorities());
}
BearerTokenAuthenticatingFilter.java 文件源码 项目:stateless-shiro 阅读 27 收藏 0 点赞 0 评论 0
String[] getPrincipalsAndCredentials(String authorizeParam) {
    Jws<Claims> claims = Jwts.parser()
            .setSigningKey(TokenRepository.SECURET.getBytes())
            .parseClaimsJws(authorizeParam);
    String email = claims.getBody().getSubject();
    return new String[]{email, authorizeParam};
}
RawAccessJwtToken.java 文件源码 项目:iotplatform 阅读 27 收藏 0 点赞 0 评论 0
/**
 * 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);
  }
}


问题


面经


文章

微信
公众号

扫码关注公众号