import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpHeaders; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.filter.GenericFilterBean; @RequiredArgsConstructor public class JwtAuthenticationFilter extends GenericFilterBean { private final AuthenticationManager authenticationManager; @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest) request; String jwt = httpServletRequest.getHeader(HttpHeaders.AUTHORIZATION); if (jwt != null && jwt.startsWith("Bearer ")) { JwtAuthenticationToken token = new JwtAuthenticationToken(jwt); Authentication authenticate = authenticationManager.authenticate(token); SecurityContextHolder.getContext() .setAuthentication(authenticate); } chain.doFilter(request, response); } }