You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
uri별 권한 설정 : RequestMatcherEntry {RequestMatcher matcher, AuthorizationManager<RequestAuthorizationContext> manager}
4
+
5
+
RequestMatcher : url 기반의 정보
6
+
AuthorizationManger<RequestAuthorizationContext> : authentication을 가지고 AuthorizationDecision을 반환함
7
+
8
+
HttpSecurity.build() 실행시
9
+
AuthorizeHttpRequestsConfigurer.configure() 실행
10
+
저장된 모든 uri별 권한 설정을 AuthorizationFilter 필터 한개로 변환하고 security filter chain에 등록함
11
+
AuthorizationFilter를 만들 때 AuthorizationManager를 생성자로 넘겨줌
12
+
List<RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>>>를 AuthorizationManager<HttpServletRequest> 으로 변환함 (by RequestMatcherDelegatingAuthorizationManager.class 생성자) (filter에서는 HttpServletRequest만 사용하기 때문 by gpt)
13
+
AuthorizationManager<HttpServletRequest>.authorize 함수를 톧해 권한을 설정함
14
+
15
+
AuthorizationFilter 에서는 AuthorizationManager<HttpServletRequest>를 가지고 모든 요청을 url과 권한을 가지고 판단함
16
+
AuthorizationManager.authorize 함수를 실행시킴
17
+
18
+
1. HttpSecurity에서 authorizeHttpRequests() 함수 실행
19
+
AuthorizeHttpRequestsConfigure.class 반환
20
+
AuthorizeHttpRequestsConfigure내부 class AuthorizationManagerRequestMatcherRegistry, AuthorizedUrl를 반복하며url 입력, manager 입력을 받는다
21
+
입력 받은 RequestMatcher와 AuthorizationManager를 RequestMatherEntry로 두고 RequestMatcherDelegatingAuthorizationManager.Builder에 쌓는다 (builder에서는 List<RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>>>으로 저장함)
22
+
2. HttpSecurity.build() 함수 실행시
23
+
AuthorizeHttpRequestConfigure.configure()함수 실행됨
24
+
RequestMatcherDelegatingAuthorizationManager.Builder.build()를 통해 AuthorizationManager<HttpServletRequest> 생성
25
+
(형변환은 하지 않음 RequestMatcherDelegatingAuthorizationManager<HttpServletRequest>의 내부 변수 mappings가 List<RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>>> 형태임
26
+
AuthorizationManager<HttpServletRequest> authorizationManager 가지는 Authorization 생성 / filter chain 등록
27
+
3. 매 요청에 AuthorizationFilter 작동
28
+
매 요청 마다 List<RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>>>를 순회함
29
+
입력 받은 RequestMatherEntry.RequestMatcher를 통해 url 검증
30
+
RequestMatherEntry.AuthorizationManager를 통해 authentic 검증 (AuthorizationManager.authorize() 함수 호출)
31
+
4. 매 요청 마다 발생하는 uri별 Exception을 다르게 처리하기 위해 authorize함수를 override하여 throw CustomException을 처리 예정
0 commit comments