Skip to content

Commit 4194baa

Browse files
committed
Don't log p/w when AuthenticationManagerBuilder configured
Fixes gh-12872
1 parent f7ff8dd commit 4194baa

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.boot.autoconfigure.security.SecurityProperties;
3131
import org.springframework.context.annotation.Bean;
3232
import org.springframework.context.annotation.Configuration;
33+
import org.springframework.context.annotation.Lazy;
3334
import org.springframework.security.authentication.AuthenticationManager;
3435
import org.springframework.security.authentication.AuthenticationProvider;
3536
import org.springframework.security.config.annotation.ObjectPostProcessor;
@@ -67,6 +68,7 @@ public class UserDetailsServiceAutoConfiguration {
6768

6869
@Bean
6970
@ConditionalOnMissingBean(type = "org.springframework.security.oauth2.client.registration.ClientRegistrationRepository")
71+
@Lazy
7072
public InMemoryUserDetailsManager inMemoryUserDetailsManager(
7173
SecurityProperties properties,
7274
ObjectProvider<PasswordEncoder> passwordEncoder) {

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@
3434
import org.springframework.security.authentication.ProviderManager;
3535
import org.springframework.security.authentication.TestingAuthenticationProvider;
3636
import org.springframework.security.authentication.TestingAuthenticationToken;
37+
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
3738
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
39+
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
3840
import org.springframework.security.core.userdetails.User;
3941
import org.springframework.security.core.userdetails.UserDetailsService;
4042
import org.springframework.security.crypto.password.PasswordEncoder;
@@ -149,6 +151,14 @@ public void userDetailsServiceWhenClientRegistrationRepositoryBeanPresent() {
149151
.doesNotHaveBean(InMemoryUserDetailsManager.class)));
150152
}
151153

154+
@Test
155+
public void generatedPasswordShouldNotBePrintedIfAuthenticationManagerBuilderIsUsed() {
156+
this.contextRunner
157+
.withUserConfiguration(TestConfigWithAuthenticationManagerBuilder.class)
158+
.run(((context) -> assertThat(this.outputCapture.toString())
159+
.doesNotContain("Using generated security password: ")));
160+
}
161+
152162
private void testPasswordEncoding(Class<?> configClass, String providedPassword,
153163
String expectedPassword) {
154164
this.contextRunner.withUserConfiguration(configClass)
@@ -227,4 +237,23 @@ public ClientRegistrationRepository clientRegistrationRepository() {
227237

228238
}
229239

240+
@Configuration
241+
@Import(TestSecurityConfiguration.class)
242+
protected static class TestConfigWithAuthenticationManagerBuilder {
243+
244+
@Bean
245+
public WebSecurityConfigurerAdapter webSecurityConfigurerAdapter() {
246+
return new WebSecurityConfigurerAdapter() {
247+
@Override
248+
protected void configure(AuthenticationManagerBuilder auth)
249+
throws Exception {
250+
auth.inMemoryAuthentication().withUser("hero").password("{noop}hero")
251+
.roles("HERO", "USER").and().withUser("user")
252+
.password("{noop}user").roles("USER");
253+
}
254+
};
255+
}
256+
257+
}
258+
230259
}

0 commit comments

Comments
 (0)