스터디-Spring

[스프링 시큐리티] 스프링 시큐리티 아키텍처 정리

일태우 2022. 1. 17. 22:35

  1. AbstractSecurityWebApplicationInitializer 또는 SecurityFilterAutoConfiguration로 자동으로 DeligatingFilterProxy를 등록
  2. 요청을 FilterChainProxy로 위임함
  3. Filter들은 WebSecurity, HttpSecurity를 통해 만들어짐
    1. The WebSecurity is created by WebSecurityConfiguration to create the FilterChainProxy known as the Spring Security Filter Chain (springSecurityFilterChain). The springSecurityFilterChain is the Filter that the DelegatingFilterProxy delegates to.
  4. 인증은 AuthenticationManager를 사용
  5. AuthenticationManager는 ProviderManager를 통해 인증을 처리
    1. ProviderManager는 여러 AuthenticationProvider를 통해 처리
    2. 그중에 하나가 DaaoAuthenticationProvider(UserDetailsService를 통해 인증처리)
  6. 인증을 성공하면 SecurityContextHolder에 넣음
  7. 인가는 FilterSecurityIntercepter를 통해 AccessDecisionManager를 사용하여 처리
    1. 접근하려는 리소스(url, 메서드 등)에 인증객체가 적절한 ConfigAttribute를 가지고있는가(롤)를 확인
    2. AccessDecisionManager 구현체중 하나인 AffirmativeBased를 사용(여러 voter중 하나라도 허용하면 허용)
      1. voter중에 WebExpressionVoter만 사용중이었음
      2. SpringExpressionHandler를 사용하여 처리, 계층형 권한처리를 위해 커스터마이징가능