Performance: JWT validation filter
MEDIUM IMPACT
This affects the server response time and the time to first byte by adding token validation before processing requests.
public class JwtFilter extends OncePerRequestFilter { private final JwtValidator jwtValidator; public JwtFilter(JwtValidator jwtValidator) { this.jwtValidator = jwtValidator; } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String token = request.getHeader("Authorization"); if (token != null && !jwtValidator.isValid(token)) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return; } filterChain.doFilter(request, response); } } // JwtValidator uses local JWT parsing and signature verification without external calls
public class JwtFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String token = request.getHeader("Authorization"); if (token != null) { try { // Synchronous blocking call to external service for token validation boolean valid = externalAuthService.validateToken(token); if (!valid) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return; } } catch (Exception e) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return; } } filterChain.doFilter(request, response); } }
| Pattern | Request Blocking | External Calls | Latency Impact | Verdict |
|---|---|---|---|---|
| Synchronous external token validation | Blocks request thread | Yes | Adds 50-200ms latency | [X] Bad |
| Local JWT parsing and validation | Non-blocking | No | Minimal latency added | [OK] Good |