From 437fb75424d1a2d852aec0a3cd16b55c3080cf30 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Sat, 13 Sep 2014 10:55:39 -0500 Subject: [PATCH] Add /error to ignored paths for security autoconfig Protecting /error doesn't make a great deal of sense and if it is protected you don't get the ErrorPageFilter for the attempt at loading it, so Tomcat renders its own HTML error page (when deployed as WAR). Fixes gh-1548 --- ...agementSecurityAutoConfigurationTests.java | 4 +-- .../SpringBootWebSecurityConfiguration.java | 2 +- .../SecurityAutoConfigurationTests.java | 4 +-- ...ringBootWebSecurityConfigurationTests.java | 34 +++++++++++++++++++ 4 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SpringBootWebSecurityConfigurationTests.java diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/ManagementSecurityAutoConfigurationTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/ManagementSecurityAutoConfigurationTests.java index 5874b0afda..9aa403bc0e 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/ManagementSecurityAutoConfigurationTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/ManagementSecurityAutoConfigurationTests.java @@ -74,7 +74,7 @@ public class ManagementSecurityAutoConfigurationTests { this.context.refresh(); assertNotNull(this.context.getBean(AuthenticationManagerBuilder.class)); // 6 for static resources, one for management endpoints and one for the rest - assertEquals(8, this.context.getBean(FilterChainProxy.class).getFilterChains() + assertEquals(9, this.context.getBean(FilterChainProxy.class).getFilterChains() .size()); } @@ -144,7 +144,7 @@ public class ManagementSecurityAutoConfigurationTests { this.context.refresh(); // Just the management endpoints (one filter) and ignores now plus the backup // filter on app endpoints - assertEquals(8, this.context.getBean(FilterChainProxy.class).getFilterChains() + assertEquals(9, this.context.getBean(FilterChainProxy.class).getFilterChains() .size()); } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/SpringBootWebSecurityConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/SpringBootWebSecurityConfiguration.java index 018816d44f..25686abc3e 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/SpringBootWebSecurityConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/SpringBootWebSecurityConfiguration.java @@ -86,7 +86,7 @@ import org.springframework.web.servlet.support.RequestDataValueProcessor; public class SpringBootWebSecurityConfiguration { private static List DEFAULT_IGNORED = Arrays.asList("/css/**", "/js/**", - "/images/**", "/**/favicon.ico"); + "/images/**", "/**/favicon.ico", "/error"); @Bean @ConditionalOnMissingBean({ IgnoredPathsWebSecurityConfigurerAdapter.class }) diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java index e736b05c39..09c33c24c7 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java @@ -68,10 +68,10 @@ public class SecurityAutoConfigurationTests { PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); assertNotNull(this.context.getBean(AuthenticationManagerBuilder.class)); - // 4 for static resources and one for the rest + // 5 for static resources and one for the rest List filterChains = this.context.getBean( FilterChainProxy.class).getFilterChains(); - assertEquals(5, filterChains.size()); + assertEquals(6, filterChains.size()); } @Test diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SpringBootWebSecurityConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SpringBootWebSecurityConfigurationTests.java new file mode 100644 index 0000000000..5d695e0acb --- /dev/null +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SpringBootWebSecurityConfigurationTests.java @@ -0,0 +1,34 @@ +/* + * Copyright 2012-2014 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.autoconfigure.security; + +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + +/** + * @author Dave Syer + */ +public class SpringBootWebSecurityConfigurationTests { + + @Test + public void testDefaultIgnores() { + assertTrue(SpringBootWebSecurityConfiguration + .getIgnored(new SecurityProperties()).contains("/error")); + } + +}