1
0
mirror of synced 2026-08-03 00:37:03 +00:00

Use HttpFirewall Bean

Fixes: gh-5025
This commit is contained in:
Rob Winch
2018-02-16 15:32:41 -06:00
parent 8796850816
commit 93118f4e91
3 changed files with 81 additions and 1 deletions
@@ -25,6 +25,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.http.HttpMethod;
@@ -382,5 +383,8 @@ public final class WebSecurity extends
this.defaultWebSecurityExpressionHandler
.setApplicationContext(applicationContext);
this.ignoredRequestRegistry = new IgnoredRequestConfigurer(applicationContext);
try {
this.httpFirewall = applicationContext.getBean(HttpFirewall.class);
} catch(NoSuchBeanDefinitionException e) {}
}
}
@@ -13,7 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.security.config.annotation.web.configurers;
package org.springframework.security.config.annotation.web.configurers
import org.springframework.context.annotation.Bean;
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
@@ -89,6 +91,28 @@ public class NamespaceHttpFirewallTests extends BaseSpringSpec {
}
}
def "http-firewall bean"() {
setup:
loadConfig(CustomHttpFirewallBeanConfig)
springSecurityFilterChain = context.getBean(FilterChainProxy)
request.setParameter("deny", "true")
when:
springSecurityFilterChain.doFilter(request,response,chain)
then: "the custom firewall is used"
thrown(RequestRejectedException)
}
@Configuration
static class CustomHttpFirewallBeanConfig extends BaseWebConfig {
@Override
protected void configure(HttpSecurity http) { }
@Bean
CustomHttpFirewall firewall() {
return new CustomHttpFirewall();
}
}
static class CustomHttpFirewall extends DefaultHttpFirewall {
@Override