ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SecurityConfig - SecurityFilterChain
    Spring 2022. 11. 13. 00:50

    SecurityFilterChain이란?

     

    우선 FilterChainProxy를 알아야 함

    이런 방식이기 때문

    FilterChainProxy

    • Spring Security에서 사용하는 특수 필터
    • SecurityFilterChain을 통해 많은 Filter 인스턴스에 위임 가능
    • Bean임
    • 한 요청의 URL 패턴에 따라 SecurityFilterChain 하나를 선택 → 해당되는 Security Filter 들을 타도록 됨
    • 따라서 FilterChainProxy { 다수의 SecurityFilterChain { 다수의 SecurityFilter } } 이 가능

    즉, Filter 인터페이스를 구현한 여러 종류의 필터들을 가지고 있는 인터페이스

     

     

    HttpSecurity란?

    세부적인 보안 기능을 설정할 수 있는 API를 제공하는 클래스

    Spring Security의 설정들은 보통 HttpSecurity로 함

    • URL 접근 권한 설정
    • Login과 Logout 페이지 인증 완료 후, 페이지 인증 실패 시 이동페이지 등 설정
    • 인증 로직 커스텀을 위한 필터 설정
    • csrf, cors 등 설정

     

    antMatchers

    .antMatchers("/**").permitAll()

    → 특정 리소스에 대해 권한 설정

    ** antMatchers vs mvcMatchers

    antMatchers는 ("/basic") 을 할 경우, /basic URL이랑만 매핑된다면, mvcMatchers는 /basic과 /basic.html 과 매핑됨

     

    permitAll

    antMatchers 설정한 리소스의 접근을 인증 절차 없이 허용

     

    anyRequest

    .anyRequest().authenticated()

     어떠한 요청에도 인증된 사용자여야 함

     

    and

    .and()

     한 configurer 기능이 끝날 때마다builder를 return 해줘서 다른 configurer와 chain 가능

     

     

    formLogin().disable()

    .formLogin().disable()

     security에서 제공해주는 로그인 페이지를 사용하지 않는다는 뜻

    제공해주는 login 페이지

     

     

    .oauth2Login()

    oauth2Login에 대한 설정 시작

    Oauth2LoginConfigurer 불러옴

     

    .authorizationEndpoint()

    인가에 대한 요청을 서비스할 때 사용

     

    .baseUri("/api/oauth2")

     /api/oauth2로 접근하면 oauth2 로그인 요청 (소셜로그인)

     

    .userInfoEndpoint()

    oauth2Login 성공 이후의 설정을 시작

     

    .userService(oAuthUserService)

    → oAuthUserService에서 설정 처리

     

    .cors().configurationSource(corsConfig.corsConfigurationSource())

    → 인증 부분을 Security로 처리한 경우, CORS 정책을 Security에서 처리해주어야 함

    CorsConfigurationSource를 cors 정책의 설정 파일로 등록

     

    .csrf().disable()

    non-browser clients 만을 위한 서비스는 csrf를 disable해도 괜찮음

     

     

     

    [Spring Security] 스프링시큐리티 설정값들의 역할과 설정방법(2) (kimchanjung.github.io)

    'Spring' 카테고리의 다른 글

    [Spring Security] kakao 소셜 로그인  (0) 2023.11.21
    Event Publisher / Event Listener  (0) 2023.07.04
    [Test Code] @NotBlank 테스트 코드 작성 방법  (0) 2023.07.03
    [Querydsl] BooleanBuilder과 BooleanExpression  (0) 2022.08.26
    Spring 개념  (0) 2022.08.08
Designed by Tistory.