-
[스프링 시큐리티] 자원 접근 허용 여부 결정 주체 (AccessDecisionManager, AccessDecisionVoter)강의노트/스프링 시큐리티 2020. 10. 7. 11:58
AccessDecisionManager
- 인증 정보, 요청 정보, 권한 정보를 이용해서 사용자의 자원접근을 허용할 것인지 거부할 것인지를 최종 결정하는 주체
- 여러 개의 Voter들을 가질 수 있으며 Voter들로부터 접근 허용, 거부, 보류에 해당하는 각각의 값을 리턴받고 판단 및 결정
- 최종 접근 거부 시 예외 발생
- 접근 결정의 세 가지 유형
- AffirmativeBased
- 여러 개의 Voter 클래스 중 하나라도 접근 허가로 결론을 내면 접근 허가로 판단한다.
- ConsensusBased
- 다수표(승인 및 거부)에 의해 최정 결정을 판단한다.
- 동수일 경우 기본은 접근허가하나 allowIfEqualGrantedDeniedDecisions를 false로 설정할 경우 접근 거부로 결정된다.
- UnanimousBased
- 모든 Voter가 만장일치로 접근을 승인해야하며 그렇지 않은 경우 접근을 거부한다.
- AffirmativeBased
AccessDecisionVoter
- 실제적으로 권한을 판단하는 주체
- Voter가 권한 부여 과정에서 판단하는 자료
- Authentication - 인증 정보(user)
- FilterInvocation - 요청 정보(antMatcher("/user"))
- ConfigAttributes - 권한 정보(hasRole("USER"))
- 결정 방식
- ACCESS_GRANTED - 접근 허용(1)
- ACCESS_DENIED - 접근 거부(-1)
- ACCESS_ABSTAIN - 접근 보류(0)
- Voter가 해당 타입의 요청에 대해 결정을 내릴 수 없는 경우
'강의노트 > 스프링 시큐리티' 카테고리의 다른 글
[스프링 시큐리티] 자원 접근 허용 여부 검증(Authorization, FilterSecurityInterceptor) (0) 2020.09.23 [스프링 시큐리티] 인증 여부 결정 주체(AuthenticationProvider) (0) 2020.09.23 [스프링 스큐리티] 인증 여부 검증(AuthenticationManager) (0) 2020.09.14 [스프링 시큐리티] Authentication Flow (0) 2020.09.14 [스프링 시큐리티] SecurityContext 객체 생성, 저장, 조회(SecurityContextPersistenceFilter) (0) 2020.09.14