Поскольку вы используете ограничения безопасности в своей конфигурации, вы можете сделать это:
public class CustomConstraintSecurityHandler extends ConstraintSecurityHandler{
@Override
public void handle(String pathInContext, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
try {
// change the request
super.handle(pathInContext, baseRequest, request, response);
}catch(Exception e) {
}
}
}
Я не использовал конфигурацию на основе xml ранее, но в конфигурации Java я использовал ConstraintSecurityHandler
примерно так:
ContextHandlerCollection contexts = new ContextHandlerCollection();
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS | ServletContextHandler.SECURITY );
KeycloakJettyAuthenticator kcAuthenticator = // set keycloak through JSON
CustomConstraintSecurityHandler securityHandler = new CustomConstraintSecurityHandler();
ConstraintMapping constraintMapping = new ConstraintMapping();
constraintMapping.setPathSpec("/*");
Constraint constraint = new Constraint();
constraint.setAuthenticate(true);
constraint.setRoles(new String[]{"**"});
constraintMapping.setConstraint(constraint);
securityHandler.addConstraintMapping(constraintMapping);
securityHandler.setAuthenticator(kcAuthenticator);
context.setSecurityHandler(securityHandler);
РЕДАКТИРОВАНИЕ:
Мой ответ основан на том факте, что ConstraintSecurityHandler
предшествует обработчику аутентификации keycloak в трассировке стека отладки.