Spring Security - AccessDecisionManager, AccessDecisionVoter
2021. 4. 17. 23:24ㆍSPRING/SPRING SECURITY
AccessDecisionManager
- 자원을 요청한 사용자가 해당 자원에 접근을 허용할지 결정하는 주체.
- 여러 Voter를 가지고 있고, Voter에 요청한 사용자가 자원에 접근해도 괜찮은지 투표를 진행하여, 투표 결과에 따라 접근 허용을 결정한다.
- 접근 결정에 세 가지 유형이 있다.
- AffirmativeBased: 여러 개의 Voter 중에 하나의 Voter가 접근 허용을 리턴하면 접근 허용으로 결정.
- ConsensusBased: 다수표에 의해 결정. 만약 허용과 거부의 수가 같으면 기본값은 접근 허용이나, allowIfEqualGrantedDeniedDecisions을 false로 설정할 경우 접근 거부가 된다.
- UnanimousBased: 모든 Voter가 접근 허용을 리턴해야지만 접근 허용으로 결정한다.
AccessDecisionVoter
- 요청 사용자에게 자원 접근을 허용해야할지 심사한다.
- AccessDecisionManager로 부터 다음 세 가지의 판단 자료를 토대로 심사한다.
- Authentication - 인증 정보(user)
- FilterInvocation – 요청 정보 (antMatcher("/user"))
- ConfigAttributes - 권한 정보 (hasRole("USER"))
- 결정방식
- ACCESS_GRANTED : 접근허용(1)
- ACCESS_DENIED : 접근 거부(0)
- ACCESS_ABSTAIN : 접근 보류(-1)
'SPRING > SPRING SECURITY' 카테고리의 다른 글
Spring Security - 인가 플로우, FilterSecurityInterceptor (0) | 2021.04.17 |
---|---|
Spring Security - 인증 플로우, AuthenticationManager, AuthenticationProvider (0) | 2021.04.17 |
Spring Security - SecurityContextPersistenceFilter (0) | 2021.04.17 |
Spring Security - SecurityContext, SecurityContextHolder (0) | 2021.04.17 |
Spring Security - Authentication 구조 (0) | 2021.04.16 |