Spring Security 기본 자동 설정

정민교·2024년 7월 9일
0

spring security

목록 보기
1/13
post-thumbnail

📒참고

본 Spring Security 시리즈 내용은 인프런 정수원님의 강의 내용을 정리한 시리즈입니다.

상업적 이용 목적의 포스팅 무단 복제 및 사용을 금합니다.

강의 주소: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0-%EC%99%84%EC%A0%84%EC%A0%95%EB%B3%B5#

📒자동 설정에 의한 기본 보안 설정

별도의 코드를 작성하지 않아도 spring boot start security 모듈만 추가하면 자동 설정에 의해 기본적인 웹 보안 기능이 적용된다.

기본적인 웹 보안 기능

  1. 모든 요청에 대해 인증 여부를 확인한다.
  2. 폼 로그인과 httpBasic 로그인 인증 방식이 기본으로 제공한다.
  3. 로그인 페이지가 자동으로 생성되어 렌더링 된다.
  4. 인증을 할 수 있는 한 개의 계정이 기본적으로 제공된다.

기본 계정

  • username: user
  • password: 랜덤 문자열

✔️SecurityProperties 클래스

SecurityProperties 클래스에서 기본 계정을 제공한다.

더 정확히는 SecurityProperties 클래스의 static 내부 클래스 User 클래스를 통해 기본 계정을 생성한다.

  • username: user
  • password: 랜덤 문자열

이 정보를 메모리에 저장을 하기 위해 getName() 메소드와 getPassword() 메소드를 호출하는 곳이 있다.

두 메소드를 호출하는 곳이 UserDetailsServiceAutoConfiguration 설정 클래스의 InMemoryUserDetailsManager 빈을 생성하는 메소드 inMemoryUserDetailsManager 에서 아까 언급한 두 메소드를 호출한다.

참고로 UserDetailsManager는 인터페이스이고 이를 구현한 구현체들이 보통 유저 정보를 관리하는 객체가 된다. InMemoryUserDetailsManager는 유저 정보를 메모리에 저장하고 관리하는 객체다.

✔️SpringBootWebSeuciryConfiguration 클래스

기본적인 웹 보안 기능을 적용해주는 클래스가 SpringBootWebSecurityConfiguration 클래스다.

Spring Boot 자동 설정에 의해 SpringBootWebSeuciryConfiguration 클래스의 static 내부 클래스인 SecurityFilterChainConfiguration 클래스의 defaultSecurityFilterChain 빈 생성 메소드가 실행되어 SecurityFilterChain 빈이 생성된다.

defaultSecurityFilterChain 빈 생성 메소드가 매번 실행되는 것은 아니고 특정 조건에 맞을 때에만 실행된다.

@ConditionalOnDefaultWebSecurity 어노테이션을 살펴보면 다음과 같이 @Conditional(DefaultWebSecurityCondition.class)를 메타 어노테이션으로 가지고 있다.

DefaultWebSecurityCondition을 살펴보면 다음과 같다.

조건은 다음과 같은데

  1. SecurityFilterChain, HttpSecurity 클래스가 클래스 패스에 존재하는 상태

  2. SecurityFilterChain 빈을 따로 생성하지 않은 상태

Spring Security 의존성을 추가했고(1번 만족), 따로 SecurityFilterChain 빈으로 등록하는 코드를 작성하지 않았기 때문에(2번 만족) 현재 모두 참인 상태이고 SecurityFilterChain 빈을 생성하는 defaultSecurityFilterChain 빈 생성 메소드가 실행되면서 기본 웹 보안 기능이 적용되고 SecurityFilterChain 빈이 생성된다.

profile
백엔드 개발자

0개의 댓글