- Spring Security 초기화 - 의존성에 의한 자동 구성2025년 01월 28일
- starryeye
- 작성자
- 2025.01.28.:34
org.springframework.boot:spring-boot-starter-security 의존성을 추가하면
Spring boot auto configuration 에 의해 설정되는 사항들에 대해 알아보겠다.
위는 SpringBootWebSecurityConfiguration.class 에 존재하는 SecurityFilteChainConfiguration 클래스 코드이다.
SecurityFilterChain 타입의 빈을 등록시키고 있으며
- 모든 요청에 대해 인증을 요구하고 formLogin, httpBasic 인증 방법을 지원하도록 한다.
따라서, org.springframework.boot:spring-boot-starter-security 의존성을 추가만 해도
SecurityFilterChain 타입의 빈이 등록되며
해당 서버의 모든 요청에 대해 인증을 요구하게 된다.
@Bean public InMemoryUserDetailsManager inMemoryUserDetailsManager(SecurityProperties properties, ObjectProvider<PasswordEncoder> passwordEncoder) { SecurityProperties.User user = properties.getUser(); List<String> roles = user.getRoles(); return new InMemoryUserDetailsManager(new UserDetails[]{User.withUsername(user.getName()).password(this.getOrDeducePassword(user, (PasswordEncoder)passwordEncoder.getIfAvailable())).roles(StringUtils.toStringArray(roles)).build()}); }
위는 UserDetailsServiceAutoConfiguration 클래스에 존재하며
InMemoryUserDetailsManager 빈 등록을 보여준다.
이 또한, @ConditionalOnMissingBean 으로 회원 인증에 관련된 빈들이 없으면 등록되는 빈이다.
SecurityProperties 로 properties 를 받는데 application.yml 을 참고하여
user id/password 를 받거나 (spring.security.user.name/password/roles)
없으면 id 는 "user" password 는 랜덤 문자열로 프로젝트 실행 로그에서 확인할 수 있다.
따라서, org.springframework.boot:spring-boot-starter-security 의존성을 추가만 해도
InMemoryUserDetailsManager 빈이 등록되며 id/password 를 요구 할 수 있게 되는 것이다.
'Spring > Security' 카테고리의 다른 글
Spring Security 초기화 - DelegatingFilterProxy, FilterChainProxy, SecurityFilterChain, WebSecurity (0) 2025.01.28 Spring Security 초기화 - HttpSecurity, SecurityConfigurer, SecurityFilterChain (0) 2025.01.28 Spring Security 소개 (0) 2025.01.28 다음글이전글이전 글이 없습니다.댓글