우주먼지
article thumbnail
Published 2022. 11. 21. 03:02
Authorization Framework/Spring

💡 Processing Flow

Spring Security 5.5 이전 버전까지는 FilterSecurityInterceptor를 통한 권한 부여 처리 과정이
상당히 복잡해서 이해가 쉽지 않았지만 5.5 부터는 AuthorizationFilter의
손쉬운 AuthorizationManager API를 이용한 권한 부여 작업을 할 수 있게 되었다.

 

 

  • 1. AuthorizationFilter는 SecurityContextHolder로부터 Authentication 획득

  • 2. AuthorizationFilter는 SecurityContextHolder로부터 얻은
    HttpServletRequest & Response , FilterChain을 기반으로 FilterInvocation 생성

  • 3. AuthorizationManager의 구현체인 RequestMatcherDelegationgAuthorizationManager 에게 전달
    RequestMatcher 평가식을 기반으로 평가식에 매치되는 AuthorizationManager 구현클래스 에게 권한부여처리 위임

  • 4. 적절한 권한이 아닌 사용자임이 밝혀지면 AccessDeniedException을 발생시키고 프로세스가 종료된다.

  • 5. 적절한 권한일 경우 다음 요청 프로세스로 넘어간다.

복습

> ## 📌 인가 구조

1. URL을 통해 사용자의 액세스를 제한하는 AuthorizationFilter는 SecurityContextHolder로부터 Authenticaton을 획득
   (권한 부여 필터)

2. 얻은 Authentication과 HttpServletRequest를 AuthorizationManager 에게 전달

3. Authorization의 구현체인 RequestMatcherDelegatingAuthorizationManager는 RequestMatcher 평가식을 기반으로 해당 평가식에 매치되는 AuthorizationManger에게 권한부여 처리를 위임

4. RequestMatcherDelegatingAuthorizationManager의 직접 처리가 아닌 AuthorizationManager의 다른 구현체에게 권한처리 위임

5. 내부에서 매치되는 AuthorizationManager의 구현 클래스가 있다면 해당 구현 클래스가 사용자의 권한을 체크

6. 적절한 권한이 아닐 시 AccessDeniedException throw 되고 ExceptionTranslationFilter가 Exception 처리

7. 적절한 권한일 시 다음 요청 프로세스 계속 이어나감

'Framework > Spring' 카테고리의 다른 글

JWT (Json Web Token) & Sticky Session  (0) 2022.11.22
Spring EL 접근 제어 표현식  (0) 2022.11.21
Authentication  (0) 2022.11.20
Servlet Filter Chain & DelegatingPasswordEncoder  (0) 2022.11.20
Spring Security 기본 구조  (0) 2022.11.18
profile

우주먼지

@o귤o

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그