• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 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
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바