작성
·
263
0
HTTP요청이 들어오면 Servlet 컨테이너에서 요청을 받는다.
Servlet 컨테이너 내의 필터들이 동작하는 중간에 DelegatingFilterProxy Filter가 요청을 받으면 springSecurityFilterChain 이름으로 생성된 빈을 AnnotationConfigServletWebServerApplicationContext 객체에서 찾는다.이 찾은 Filter Bean이 바로 FilterChainProxy다.
그 후에 FilterChainProxy Bean에 요청을 전달한다. 이제 FilterChainProxy에서 필터들을 이용하여 보안처리를 진행한 후 최종적으로 SpringMVC의 DeispatcherServlet에 전달하여 요청에 대한 Servlet 처리를 하게 된다.
==
유저가 서버에 요청을 보낸다.
요청이 DelegatingFilterProxy 필터를 만나고 FilterChainProxy에 위임되어 등록되어 있는 SecurityFilterChain들의 조건과 매칭한다. 이번 예제에서는 어떤 요청이든 인증을 받도록 했다.
매칭되는 SecurityFilterChain이 있는 경우 해당 필터 체인으로 흐름이 이어진다.
필터 체인을 돌면서 여러 처리를 하고 AuthenticationFilter를 만나 인증을 수행한다.
AuthenticationFilter에서는 AuthenticationToken을 만들고 AuthenticationManager에게 인증 여부를 요청한다.
AuthenticationManager는 내부의 AuthenticationProvider들 중 처리할 수 있는 AuthenticationProvider에게 인증 여부를 요청한다.
AuthenticationProvider는 UserDetailsService를 통하여 유저 정보를 가져온다.
위에 과정들이 이루어지고 있긴 한거죠? 강의에선 언급이 안되었지만,,, 깊게 파고들수록 어렵네요
답변 2
0
맞습니다. 위 과정으로 수행됩니다. 하지만 전체를 추상적으로 보는 것도 개발자에게 중요합니다. 너무 하나하나씩 뜯어볼 필요는 없습니다.
curityFilterChain이 있는 경우 해당 필터 체인으로 흐름이 이어진다.
필터 체인을 돌면서 여러 처리를 하고 AuthenticationFilter를 만나 인증을 수행하는데 이때 UserDetailsService가 호출된다.
이정도만 알아도 됩니다.
0
안녕하세요, 인프런 AI 인턴이에요.
질문하신 내용은 스프링 시큐리티에 대한 내용이네요.
스프링 시큐리티는 스프링 기반의 애플리케이션에서 보안 관련 처리를 담당하는 프레임워크로, 주요한 역할 중 하나는 HTTP 요청을 인증과 권한 확인을 통해 처리하는 것입니다.
스프링 시큐리티는 DelegatingFilterProxy와 FilterChainProxy를 통해 동작합니다. 클라이언트가 서버에 요청을 보내면 DelegatingFilterProxy 필터가 요청을 받아서, AnnotationConfigServletWebServerApplicationContext 객체에서 springSecurityFilterChain이라는 이름의 빈을 찾습니다. 이 빈은 FilterChainProxy 역할을 수행하게 됩니다.
FilterChainProxy에서는 등록되어 있는 SecurityFilterChain들의 조건과 매칭하여 필터 체인을 거치게 됩니다. 여러 처리를 거쳐서 AuthenticationFilter에서 인증을 수행하게 되고, 인증이 성공하면 최종적으로 요청에 대한 처리를 진행하게 됩니다.
스프링 시큐리티는 보안과 관련된 다양한 기능을 제공하며, 자세한 내용은 스프링 시큐리티 공식 문서나 관련된 강의를 참고하시면 도움이 될 것입니다.
더 궁금한 점이 있으시면 언제든지 물어보세요.