Для целей контекста я нахожусь в процессе обновления существующей кодовой базы с Spring Boot 1.5.3 до 1.5.14. В рамках этого обновления некоторые из существующих тестов начали давать сбой из-за добавленного StrictHttpFirewall, который теперь жалуется, что некоторые URL-адреса перенаправления содержат jsessionid
:
2018-06-27 18:04:33.137 WARN 15406 --- [ qtp10915321-23] org.eclipse.jetty.server.HttpChannel : /mock/oauth/authorize;jsessionid=node0hhrv3r9m7c6i3ksjrhkeql4m0.node0
org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String ";"
Несмотря на то, что у меня установлен режим отслеживания сеансов cookie, Jetty все еще записывает его в URL-адрес. В соответствии с Jetty docs , я мог бы отключить это, установив org.eclipse.jetty.servlet.SessionIdPathParameterName
в none
, но когда я попытался сделать это с ServletContextInitializer
:
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("org.eclipse.jetty.servlet.SessionIdPathParameterName", "none");
}
Это не работает, по-видимому, потому что выполняется после того, как Jetty уже запросила это свойство (по крайней мере, на основе моих точек останова отладки).
Пара тестов, которые начали проваливаться, тестируют некоторые варианты поведения потока кода oauth2, и перенаправление на конечную точку авторизации теперь проблематично.
Есть предложения?