AccessDecisionManager
-
인증정보 , 요청정보, 권한정보 를 이용해서 사용자의 자원접근 허가여부를 결정하는 주체
-
여러개의 Votor 를 가지며 Votor 들에게 허용, 거부 , 보류 값을 각각 리턴받아 판단, 결정한다.
-
접근 거부시 AccessDeniedException을 발생
AcceessDesicionManager 의 접근 결정 유형에 따른 구현객체들
-
AffermativeBased : Votor 클래스 중 하나라도 접근 허가를 내면 접근 허가
-
ConsensusBased : 다수표에 의해 판단, 동수일경우 default 값은 허가이며, allowIfEqualGrantedDeniendDecisions 속성을 false 로 주면 접근 거부 설정 됨
-
UnanimousBased : 하나의 Votor 라도 접근불가 시 접근 거부
AccessDecisionVotor
-
판단을 심사하는 위원
-
판단자료를 근거하여 결정 방식을 내린다.
판단자료
-
Authentication : 인증정보 , User 객체
-
FilterInvocation : 요청정보, antMatchers("/user")
-
ConfigAttributes : 권한정보, (hasRole("USER"))
결정 방식
-
ACCESS_GRANTED : 접근 허용 (1)
-
ACCESS_DENIED : 접근 거부 (-1)
-
ACCESS_ABSTRAIN : 접근 보류 (0)
-
ACCESS_ABSTRAIN 은 Votor 클래스가 해당 타입의 요청에 대해 결정을 내릴 수 없는 경우 판단한다.
AccessDecisionManager 와 AccessDecisionVotor 의 동작 과정
-
FilterSecurityInterceptor 동작 후 Authentication 존재여부 확인, 존재 시 AccessDescisionManager 호출
-
AccessDecisionManager 의 decide(authentication, object, configAttributes) 실행, 각 매개 값은 판단자료인 인증객체, 요청경로,권한정보.
-
AccessDecisionVotor 클래스들 호출.
-
AccessDecisionVotor 가 심의를 하고 ACCESS_GRANTED , ACCESS_DENIED, ACCESS_ABSTRAIN 등의 심의 결과를 반환
-
AccessDecisionManager 가 심의 결과를 받아 판단
-
ACCESS_GRANTED 로 판단이 났을 경우 FilterSecurityInterceptor에 허가 요청
-
ACCESS_DENIED 로 판단이 났을 경우 AccessDeniedException 발생, ExceptionTranslationFilter 가 이를 처리 함.
'springframework > 시작하자SpringSecurity' 카테고리의 다른 글
25.정적 자원 관리 - WebIgnore 설정 (0) | 2020.09.27 |
---|---|
24.SpringSecurity 필터, 아키텍쳐 정리 (0) | 2020.09.23 |
22.Authorization, FilterSecurityInterceptor (0) | 2020.09.22 |
21.AuthenticationProvider (0) | 2020.09.22 |
20.AuthenticationMananger를 구현한 ProviderManager (0) | 2020.09.22 |