diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/servlet/ErrorPageSecurityFilterConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/servlet/ErrorPageSecurityFilterConfiguration.java index 3800f36fff..6d30323942 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/servlet/ErrorPageSecurityFilterConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/servlet/ErrorPageSecurityFilterConfiguration.java @@ -21,6 +21,7 @@ import java.util.EnumSet; import javax.servlet.DispatcherType; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.filter.ErrorPageSecurityFilter; @@ -35,6 +36,7 @@ import org.springframework.security.web.access.WebInvocationPrivilegeEvaluator; * @author Madhura Bhave */ @Configuration(proxyBeanMethods = false) +@ConditionalOnClass(WebInvocationPrivilegeEvaluator.class) @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) class ErrorPageSecurityFilterConfiguration { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/servlet/SecurityAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/servlet/SecurityAutoConfigurationTests.java index 1cf5e9728a..fefae03f93 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/servlet/SecurityAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/servlet/SecurityAutoConfigurationTests.java @@ -242,6 +242,18 @@ class SecurityAutoConfigurationTests { })); } + @Test + void filterForErrorPageSecurityInterceptorWhenWebInvocationPrivilegeEvaluatorNotPresent() { + this.contextRunner.withClassLoader(new FilteredClassLoader("org.springframework.security.config")) + .run((context) -> assertThat(context).doesNotHaveBean("errorPageSecurityFilter")); + } + + @Test + void filterForErrorPageSecurityInterceptorConditionalOnClass() { + this.contextRunner.withClassLoader(new FilteredClassLoader("org.springframework.security.web")) + .run((context) -> assertThat(context).doesNotHaveBean("errorPageSecurityFilter")); + } + @Configuration(proxyBeanMethods = false) @TestAutoConfigurationPackage(City.class) static class EntityConfiguration {