728x90
Spring Security 를 사용할때, 아무런 세팅도 하지않은 초기 username은 "user" 이고
password 는 콘솔에 찍힌 password를 사용한다.
초기 username이 user 라는건 도대체 어디에 명시해두었을까 ?!
Spring Security 관련 설정은 UserDetailsServiceAutoConfiguration 클래스에서 정의하고 있다.
다음은 해당 클래스의 코드 일부이다.
@Bean
@ConditionalOnMissingBean(
type = "org.springframework.security.core.userdetails.UserDetailsService"
)
public InMemoryUserDetailsManager inMemoryUserDetailsManager(SecurityProperties properties, ObjectProvider<PasswordEncoder> passwordEncoder) {
User user = properties.getUser();
PasswordEncoder encoder = passwordEncoder.getIfAvailable();
UserDetails userDetails = (encoder != null) ? User.withUsername(user.getName())
.password(encoder.encode(user.getPassword()))
.roles(user.getRoles().toArray(new String[0])).build()
: User.withUsername(user.getName()).password("{noop}" + user.getPassword())
.roles(user.getRoles().toArray(new String[0])).build();
return new InMemoryUserDetailsManager(userDetails);
}
User 객체를 정희하고 있는 propteries . 즉 SecurityProperties 를 쫓아가보자
다음은 SecurityProperties 클래스에서 User 클래스를 정의하는 부분이다.
public static class User {
private String name = "user";
private String password = UUID.randomUUID().toString();
private List<String> roles = new ArrayList();
private boolean passwordGenerated = true;
public User() {
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
if (StringUtils.hasLength(password)) {
this.passwordGenerated = false;
this.password = password;
}
}
//.. 생략
}
바로 여기서 name = "user" 로 명시하고 , passward 는 UUID 로 생성해주고 있는 것을 확인할 수 있다.
검색시에 다음과 같이 스프링 공식문서에서도 확인 할 수있지만 보기 어려워서 나만의 글로 정리해 두었다 !
728x90
'Backend > Spring & Spring Boot' 카테고리의 다른 글
AOP 동작 방식 (0) | 2025.02.04 |
---|---|
Spring에서 @Autowired와 static 메서드 사용 시 NullPointException (0) | 2025.01.22 |
Spring boot - war 파일 기본 루트 (0) | 2023.12.07 |
Spring Boot 의 내장웹서버 Tomcat 의 위치 (2) | 2023.11.29 |
Spring Framework , Spring , Spring Boot 간단 정리 (0) | 2023.11.28 |