Skip to content

Commit 0fcf2c2

Browse files
Making UserDetailsServiceAutoConfiguration conditional
The UserDetailsServiceAutoConfiguration is only to be active in a servlet based web application See gh-43326
1 parent 4ee9fae commit 0fcf2c2

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/servlet/UserDetailsServiceAutoConfiguration.java

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3232
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
3333
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
34+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
35+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
3436
import org.springframework.boot.autoconfigure.security.SecurityProperties;
3537
import org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration.MissingAlternativeOrUserPropertiesConfigured;
3638
import org.springframework.context.annotation.Bean;
@@ -53,6 +55,7 @@
5355
* @author Dave Syer
5456
* @author Rob Winch
5557
* @author Madhura Bhave
58+
* @author Lasse Wulff
5659
* @since 2.0.0
5760
*/
5861
@AutoConfiguration
@@ -61,6 +64,7 @@
6164
@ConditionalOnBean(ObjectPostProcessor.class)
6265
@ConditionalOnMissingBean(value = { AuthenticationManager.class, AuthenticationProvider.class, UserDetailsService.class,
6366
AuthenticationManagerResolver.class }, type = "org.springframework.security.oauth2.jwt.JwtDecoder")
67+
@ConditionalOnWebApplication(type = Type.SERVLET)
6468
public class UserDetailsServiceAutoConfiguration {
6569

6670
private static final String NOOP_PASSWORD_PREFIX = "{noop}";

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/servlet/UserDetailsServiceAutoConfigurationTests.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2828
import org.springframework.boot.test.context.FilteredClassLoader;
2929
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
30+
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
3031
import org.springframework.boot.test.system.CapturedOutput;
3132
import org.springframework.boot.test.system.OutputCaptureExtension;
3233
import org.springframework.context.annotation.Bean;
@@ -56,11 +57,12 @@
5657
*
5758
* @author Madhura Bhave
5859
* @author HaiTao Zhang
60+
* @author Lasse Wulff
5961
*/
6062
@ExtendWith(OutputCaptureExtension.class)
6163
class UserDetailsServiceAutoConfigurationTests {
6264

63-
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
65+
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
6466
.withUserConfiguration(TestSecurityConfiguration.class)
6567
.withConfiguration(AutoConfigurations.of(UserDetailsServiceAutoConfiguration.class));
6668

@@ -192,7 +194,7 @@ void userDetailsServiceWhenRelyingPartyRegistrationRepositoryPresentAndPasswordC
192194
.run(((context) -> assertThat(context).hasSingleBean(InMemoryUserDetailsManager.class)));
193195
}
194196

195-
private Function<ApplicationContextRunner, ApplicationContextRunner> noOtherFormsOfAuthenticationOnTheClasspath() {
197+
private Function<WebApplicationContextRunner, WebApplicationContextRunner> noOtherFormsOfAuthenticationOnTheClasspath() {
196198
return (contextRunner) -> contextRunner
197199
.withClassLoader(new FilteredClassLoader(ClientRegistrationRepository.class, OpaqueTokenIntrospector.class,
198200
RelyingPartyRegistrationRepository.class));

0 commit comments

Comments
 (0)