Skip to content

Commit c3563df

Browse files
committed
Include HttpStatusRequestRequestedHandler
Closes gh-12548
1 parent 66711f2 commit c3563df

File tree

2 files changed

+16
-2
lines changed
  • config/src

2 files changed

+16
-2
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/builders/WebSecurity.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@
5656
import org.springframework.security.web.access.intercept.AuthorizationFilter;
5757
import org.springframework.security.web.access.intercept.FilterSecurityInterceptor;
5858
import org.springframework.security.web.debug.DebugFilter;
59+
import org.springframework.security.web.firewall.CompositeRequestRejectedHandler;
5960
import org.springframework.security.web.firewall.HttpFirewall;
61+
import org.springframework.security.web.firewall.HttpStatusRequestRejectedHandler;
6062
import org.springframework.security.web.firewall.ObservationMarkingRequestRejectedHandler;
6163
import org.springframework.security.web.firewall.RequestRejectedHandler;
6264
import org.springframework.security.web.firewall.StrictHttpFirewall;
@@ -309,8 +311,10 @@ protected Filter performBuild() throws Exception {
309311
filterChainProxy.setRequestRejectedHandler(this.requestRejectedHandler);
310312
}
311313
else if (!this.observationRegistry.isNoop()) {
312-
filterChainProxy
313-
.setRequestRejectedHandler(new ObservationMarkingRequestRejectedHandler(this.observationRegistry));
314+
CompositeRequestRejectedHandler requestRejectedHandler = new CompositeRequestRejectedHandler(
315+
new ObservationMarkingRequestRejectedHandler(this.observationRegistry),
316+
new HttpStatusRequestRejectedHandler());
317+
filterChainProxy.setRequestRejectedHandler(requestRejectedHandler);
314318
}
315319
filterChainProxy.setFilterChainDecorator(getFilterChainDecorator());
316320
filterChainProxy.afterPropertiesSet();

config/src/test/java/org/springframework/security/config/annotation/web/builders/WebSecurityTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,16 @@ public void customRequestRejectedHandlerInvoked() throws ServletException, IOExc
122122
assertThat(this.response.getStatus()).isEqualTo(HttpServletResponse.SC_BAD_REQUEST);
123123
}
124124

125+
// gh-12548
126+
@Test
127+
public void requestRejectedHandlerInvokedWhenOperationalObservationRegistry() throws ServletException, IOException {
128+
loadConfig(ObservationRegistryConfig.class);
129+
this.request.setServletPath("/spring");
130+
this.request.setRequestURI("/spring/\u0019path");
131+
this.springSecurityFilterChain.doFilter(this.request, this.response, this.chain);
132+
assertThat(this.response.getStatus()).isEqualTo(HttpServletResponse.SC_BAD_REQUEST);
133+
}
134+
125135
@Test
126136
public void ignoringMvcMatcherServletPath() throws Exception {
127137
loadConfig(MvcMatcherServletPathConfig.class, LegacyMvcMatchingConfig.class);

0 commit comments

Comments
 (0)