본문 바로가기

spring security

사용자 정의 보안 설정하기

정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!

 

 

 

사용자 정의 보안 기능 구현
  • 한 개 이상의 SecurityFilterChain 타입 빈을 정의
  • 인증 API 및 인가 API 설정

 

1. SecurityConfig class 생성

  • @EnableWebSecurity 어노테이션 필수 선언

 

2. SecurityFilterChain 빈으로 정의

 

3. HttpSecurity 의존성 주입 받기

 

4. 주입 받은 HttpSecurity를 통해 인증 API와 인가 API 설정

 

인증 API)

  • http.formLogin()
  • http.logout()
  • http.csrf()
  • http.httpBasic()
  • http.SessionManagement()
  • http.RememberMe()
  • http.ExceptionHandling()
  • http.addFilter()

 

인가 API)

  • http.authorizeHttpRequests(auth -> auth.
          .requestMatchers(/admin)
          .hasRole(USER)
          .permitAll()
          .authenticated()
          .fullyAuthentication()
          .access(hasRole(USER))
          .denyAll())
  • Spring Security 7 이상부터는 람다식만 지원하므로 람다로 작성하기 !

 

  • 클래스에 반드시 @EnableWebSecurity 정의
  • 모든 설정 코드는 람다 형식으로 작성
  • 사용자 정의로 SecurityFilterChain을 빈으로 등록하면 자동설정에 의한 빈은 생성되지 않음
  • http.authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) ≫ 모든 요청에 대해 인증을 받아야 함
  • .formLogin(Customer.withDefaults()) ≫ 인증 방식 폼로그인 지원, default 방식

 

 

 

사용자 추가 설정

 

1. application.properties / application.yml 파일에 설정

 

2. SecurityConfig 설정 클래스에 직접 정의

  • 여러 사용자 정의 가능
  • password 지정 시 {noop}~~
  • 폼로그인 시 정의된 사용자 정보로 입력하여 인증받음
  • 사용자 설정 없을 때 기본으로 제공되던 password는 제공되지 않음