diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/SessionManagementConfigurer.java b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/SessionManagementConfigurer.java index 283862a602..d9d69f7cea 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/SessionManagementConfigurer.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/SessionManagementConfigurer.java @@ -199,9 +199,14 @@ public final class SessionManagementConfigurer> /** * If set to true, allows HTTP sessions to be rewritten in the URLs when using * {@link HttpServletResponse#encodeRedirectURL(String)} or - * {@link HttpServletResponse#encodeURL(String)}, otherwise disallows all URL - * rewriting, including resource chain functionality. - * This prevents leaking information to external domains. + * {@link HttpServletResponse#encodeURL(String)}, otherwise disallows HTTP sessions to + * be included in the URL. This prevents leaking information to external domains. + *

+ * This is achieved by guarding {@link HttpServletResponse#encodeURL} and + * {@link HttpServletResponse#encodeRedirectURL} invocations. Any code that also + * overrides either of these two methods, like + * {@link org.springframework.web.servlet.resource.ResourceUrlEncodingFilter}, needs + * to come after the security filter chain or risk being skipped. * @param enableSessionUrlRewriting true if should allow the JSESSIONID to be * rewritten into the URLs, else false (default) * @return the {@link SessionManagementConfigurer} for further customization