FilterChainProxy 5

24.SpringSecurity 필터, 아키텍쳐 정리

Spring Security Initalization 2개의 WebSecurityConfigurerAdapter 상속클래스가 있다고 가정한다. 설정클래스에서 정의한 여러 API 들을 정의 API에 맞는 클래스에서 Filter Type Bean을 생성 Filter Type Bean 들을 생성하는 클래스는 HttpSecurity ( 각각의 설정클래스의 Filter Type Bean 명단은 SecurityFilterChain의 Filters 필드에 저장 되는 것 기억 ) HttpSecurity의 Filter Type Bean(Filters) 들은 WebSecurity 객체에 저장 됨 WebSecurity의 FilterChainProxy 객체 생성시 FilterChainProxy의 생성자에 SecurityFil..

18.인증 저장소 필터 , SecurityContextPersistenceFilter

SecurityContextPersistenceFilter SecurityContext 객체의 생성, 저장, 조회 를 담당 FilterChainProxy의 Filter 중 2번 째에 위치 접근에 따른 동작 익명사용자의 접근 SecrutityContext 객체를 생성하여 SecurityContextHolder에 저장함 AnonymousAuthenticationFilter 에서 만든 AnonymousAuthenticationToken 객체를 SecurityContext에 저장시킴 인증 시도 시 SecurityContext 객체를 생성하여 SecurityContextHolder에 저장 UsernamePasswordAuthenticationFilter 에서 인증 성공 후 만든 UsernamePasswordAut..

15.필터 초기화와 다중 보안 설정

다중 보안 설정, 필터 초기화 방식 다중 보안 설정은 즉, WebSecurityConfigurerAdapter 상속클래스가 다중임을 뜻함. 각각의 WebSecurityConfugurerAdapter 객체들은 각각의 HttpSecurity를 통해 보안 API 에 맞는 Filter들을 가지고 있음 각각의 SpringSecurity 설정 클래스마다 SecurityFilterChain 객체를 각각 생성. WebSecurityConfigurerAdapter 마다 지정된 API 에 맞는 Filter들의 명단을 SecurityFilterChain 객체의 Filters 필드에 저장 또한 각각의 RequestMapping 들을 SecurityFilterChain 객체의 RequestMatcher 필드(AntRequest..

14.DelegatingFilterProxy, FilterChainProxy

DelegatingFilterProxy Filter는 Servlet 2.3 이상부터 적용된 기술이다. Spring 에서 필터가 동작한다는 것은 SpringContext 안에 Filter들이 있다는 뜻이된다. 하지만 Filter 는 ServletContext에 존재해 영역이 다르다. 결국 Filter는 스프링 기술이나 Bean을 Injection 받을 수 없다. 이렇게 각자 영역이 다른 상태에서 Servlet Spec 에서 사용되는 Filter를 사용할 수 있게끔 하는 것이 DelegatingFilterProxy 이다. DelegatingFilterProxy 의 작동원리 SpringBean 이 Filter를 상속한다. 이는 Filter Type Bean을 의미한다. DelegatingFilterProxy ..

4.UsernamePasswordAuthenticationFilter

UsernamePasswordAuthenticationFilter? 로그인 처리, 인증기능 해주는 Filter이다. 실질적으로 사용자가 로그인을 하게되면, 인증처리가 이루어지는데 이 요청을 담당하여 인증처리를 하는 Filter가 UsernamePasswordAuthenticationFilter 이다. 흐름과 역할은, 분기점, 결과처리! 내부적으로 각각의 인증처리 역할에 따라 여러개의 클래스를 활용하게된다. 사용자가 인증을 시도 UsernamePasswordAuthenticationFilter가 요청을 받는다. AntPathRequestMatcher("/login") 가 요청 url이 로그인 url과 매칭되는지 검사한다. 매칭이 되면 다음단계 , 불일치하면 다른 Filter가 Chain 일치하면 Usern..