in src/main/java/org/apache/geronimo/microprofile/impl/jwtauth/servlet/GeronimoJwtAuthFilter.java [68:104]
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
if (!HttpServletRequest.class.isInstance(request)) {
chain.doFilter(request, response);
return;
}
final HttpServletRequest httpServletRequest = HttpServletRequest.class.cast(request);
if (!publicUrls.isEmpty()) {
final String current = httpServletRequest.getRequestURI().substring(httpServletRequest.getContextPath().length());
if (publicUrls.stream().anyMatch(current::startsWith)) {
chain.doFilter(request, response);
return;
}
}
try {
final JwtRequest req = new JwtRequest(service, headerName, cookieName, prefix, httpServletRequest);
extension.execute(req.asTokenAccessor(), () -> chain.doFilter(req, response));
} catch (final Exception e) { // when not used with JAX-RS but directly Servlet
final HttpServletResponse httpServletResponse = HttpServletResponse.class.cast(response);
if (!httpServletResponse.isCommitted()) {
Throwable current = e;
while (current != null) {
if (JwtException.class.isInstance(current)) {
final JwtException ex = JwtException.class.cast(current);
httpServletResponse.sendError(ex.getStatus(), ex.getMessage());
return;
}
if (current == current.getCause()) {
break;
}
current = current.getCause();
}
}
throw e;
}
}