1. 서블릿 컨테이너에 요청이 들어온다. (사실 전부 서블릿 컨테이너 안에서 동작)
  2. DeligatingFilterProxy가 빈으로 등록되어 있으면 특정한 빈으로 요청의 필터 처리를 위임한다.
  3. 필터 체인은 WebSecurity, HttpSecurity를 가지고 필터 체인 목록을 만든다. 우리가 WebSecuriyConfiguration을 설정한 부분이다. 여기 까지가 표의 윗 부분이다.
  4. 이러한 필터들이 사용한 객체 들이 있는데 인증은 AuthenticationManager, 인가는 AccessDecisionManager
  5. 인증에 사용 되는 기본 구현체는 ProviderManager 이다.
  6. ProviderManager는 다시 여러 Provider를 사용해서 인증하는데 그 중에 하나가 DaoAuthenticationProvider 이다.
  7. DaoAuthenticationProvider는 데이터에서 유저 정보를 읽어 와서 비교한다. UserDetailsService를 이용해서 유저 정보를 가져온다.
  8. 인증이 성공한다면 SecurityContextHolder에 넣어 두고 전반에 사용한다.
  9. Authentication 객체는 Principal, GrantedAuthorities등을 가지고 있다.
  10. 인증이 되면 최종 적으로 FilterSecurityInterceptor를 이용해서 인가를 한다.
  11. FilterSecurityInterceptor는 AccessDecisionManager를 이용해서 인가한다. 적절한 role을 가지고 있는지
  12. 인가 전략은 3가지가 있는데 기본은 AffirmativeBaesd 이다. 한명 이라도 인가 되면 인가, 나머지 둘은 다수결, 만장일치이다.
  13. AffirmativeBaesd가 사용하는 Voter는 WebExpressionVoter 한가지 였었다. WebExpressionVoter는 SecurityExpressionHandler를 사용해서 expression을 처리하는데 이전 강의에서 계층형 인가를 위해 커스텀 했었다.