Authorization (인가), FilterSecurityInterceptor

Authorization 

 

  • 인증이 된 유저가 어떠한 자원에 접근할 시, 권한에 따라 허용 및 거절을 하는 것을 말함. 
  • 스프링 시큐리티가 지원 하는 권한 계층
    • 웹 계층
      • URL 요청에 따른 메뉴 혹은 화면 단위 레벨 보안 (가장 많이 사용됨)
    • 서비스 계층
      • 화면 단위가 아닌 메소드 같은 기능 단위의 레벨 보안
    • 도메인 계층(Access Control List, 접근제어목록)
      • 객체 단위의 레벨 보안

FilterSecurityInterceptor

 

  • 마지막에 위치한 필터로써 인증된 사용자에 대하여 특정 요청의 승인 또는 거부 여부를 최종적으로 결정
  • 인증객체 없이 보호자원에 접근을 시도할 경우 AuthenticationException을 발생함
  • 인증 후 자원에 접근 가능한 권한이 없을 경우 AccessDeneidException을 발생함. 
  • 권한 제어 방식 죽 HTTP 자원의 보안을 처리하는 필터
  • 권한 처리를 AccessDecisionManaget에게 맡김. 

 

 

  • 유저가 요청을 보내오면 FilterSecurityInterceptor가 인증여부를 체크함. 
    • 인증 객체가 없는 유저라면 AuthenticationException을 던지고 ExceptionTranslationFilter가 그 예외를 처리함.
  • 인증이 된 객체가 있다면 SecurityMetadataSource가 해당 자원에 어떤 권한이 필요한지 가져옴. 
    • 해당 경로에 권한이 Null 이라면 자원접근을 허용
  • 접근 하는 경로에 권한이 필요하다면 접근 권한 처리를 위해 AccessDecisionManager에게 맡김. 
  • AccessDecisionManager는 AccessDecisionVoter에게 승인 여부를 요청함.
  • AccessDecisionVoter가 낸 결과를 AccessDecisionManager가 받아 최종 결정을 내림 
    • 접근 권한이 거부되었으면 AccessDeniedExeption을 던짐.

'Backend > Security' 카테고리의 다른 글

HTTPS, SSL/TLS  (0) 2023.07.17
AccessDecisionManager, AccessDecisionVoter  (0) 2023.01.22
AuthenticationManager, AuthenticationProvider  (0) 2023.01.22
SecurityContextPersistenceFilter  (0) 2023.01.21
SecurityContextHolder, SecurityContext  (1) 2023.01.21