[Spring Security] ProviderManager와 AuthenticationProvider 사용하기
·
Java/Spring Security
본 포스팅은 ProviderManager와 AuthenticationProvider가 무엇인지 이해하고 이들을 이용해 인증하는 방법을 공부합니다. ProviderManager ProviderManager는 이름에서도 알 수 있듯이 provider를 관리하는 manager클래스 입니다. 예를 들어, 어떤 일을 하는데 작업을 하는 사람만 있다면 작업자들은 어떤 일을 누가 해야 할지 모를 수 있는데, 작업을 관리하는 관리자가 있다면 어떤 작업을 어떤 사람이 할지 지시를 해줌으로써 좀 더 효율적으로 작업을 할 수 있습니다. 이처럼 인증 작업을 어떤 클래스가 할지 정해주는 역할을 하는 것이 ProviderManager입니다. 즉, 인증 작업을 관리하는 매니저라고 생각할 수 있습니다. ProviderManager는..
[Spring Security] SecurityFilterChain 파헤치기
·
Java/Spring Security
본 포스팅은 Spring Security의 전체적인 흐름과 FilterChain이 어떻게 동작하는지 이해하는 것을 목표로 합니다. 우선 클라이언트가 HTTP 요청을 했을때 security가 어떻게 작동하는지 흐름부터 살펴본 뒤, 하나씩 알아보겠습니다. 클라이언트의 HTTP 요청이 서버에 도착합니다. "DelegatingFilterProxy"라는 서블릿 필터가 해당 요청을 가장 먼저 받아 "FilterChainProxy"에게 요청을 처리하도록 위임합니다. "FilterChainProxy"는 자신이 관리하고 있는 여러개의 "SecurityFilterChain"에게 순서대로 요청을 넘깁니다. 요청에 적합한 "SecurityFilterChain"내의 filter가 차례대로 실행되며, 각각의 filter는 보안(..
[Spring Security] SecurityContextHolder 이해하기
·
Java/Spring Security
Session 관련 문제가 발생해 프로젝트의 Security 설정 부분을 살펴보다 Spring Security 부분을 공부를 해야겠다는 생각이 들었다. 그래서 거대한 Spring Security 부분을 차근차근 정리하면서 공부해보려고 한다. SecurityContextHolder SecurityContextHolder는 인증된 사용자의 정보를 저장하고 있는 저장소이다. SecurityContextHolder의 구조를 사진으로 보면 SecurityContext를 감싸고 있고 SecurityContext 안에 Authentication(인증)이 저장되어 있다. SecurityContextHolder 설정 1. SecurityContext securityContext = SecurityContextHolder..