울음참고 개발공부
article thumbnail
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 로 생성해주고 있는 것을 확인할 수 있다. 

 

 


 

 

검색시에 다음과 같이 스프링 공식문서에서도 확인 할 수있지만 보기 어려워서 나만의 글로 정리해 두었다 ! 

https://docs.spring.io/spring-boot/docs/1.3.8.RELEASE/reference/html/boot-features-security.html

 


 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!