出于上下文目的,我正在将现有代码库从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。根据{{3}},我可以通过将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身份验证代码流行为,并且到授权端点的重定向现在有问题。
有什么建议吗?