-
SecurityConfig - SecurityFilterChainSpring 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에서 제공해주는 로그인 페이지를 사용하지 않는다는 뜻
.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