티스토리 뷰
728x90
반응형
AccessDecisionManager
- 인증정보, 요청정보, 권한정보를 이용해서 사용자의 자원접근을 허용할 것인지 거부할 것인지를 최종 결정하는 주체
- 여러 개의 Voter 들을 가질 수 있으며 Voter 들로부터 접근허용, 거부, 보류에 해당하는 각각의 값을 리턴받고 판단 및 결정
- 최종 접근 거부 시 예외 발생
AccessDecisionManager는 인터페이스로 이 인터페이스를 구현한 3가지의 구현체가 있다.
접근결정의 세가지 유형
- AffirmativeBased
- 여러개의 Voter 클래스 중 하나라도 접근 허가로 결론을 내면 접근 허가로 판단한다.
- OR 조건이라고 생각하면 편하다. 기본 구현체이기도하다.
- ConsensusBased
- 다수표(승인 및 거부)에 의해 최종 결정을 판단한다.
- 동수일 경우 기본은 접근허가이나 allowEqualGrantedDeniedDecisions 속성을 false로 설정할 경우 접근거부로 결정된다
- UnanimousBased
- 모든 Voter가 만장일치로 접근을 승인해야 하며 그렇지 않은 경우 접근을 거부한다.
AccessDecisionVoter
- 판단을 심사하는 것 (위원)
- Voter가 권한 부여 과정에서 판단하는 자료
- Authentication - 인증 정보(user)
- FilterInvocation - 요청 정보 (antMatcher("/user"))
- ConfigAttributes - 권한 정보 (hasRole("USER"))
- 결정 방식
- ACCESS_GRANTED: 접근 허용(1)
- ACCESS_DENIED: 접근 거부(-1)
- ACCESS_ABSTAIN: 접근 보류(0)
- Voter가 해당 타입의 요청에 대해 결정을 내릴 수 없는 경우
- FilterSecurityInterceptor 가 AccessDecisionManager에 인가처리 위임
- AccessDecisionManager는 자신이 가지고 있는 Voter들에게 정보decide(authentication, object, configAttributes)를 전달한다.
- Voter들은 정보들을 가지고 권한 판단을 심사한다.
- 승인,거부,보류 결정방식을 반환하면 AccessDecisionManager에서는 반환받은 결정 방식을 가지고 후처리를 한다.
- 승인: FilterSecurityInterceptor에 승인여부 반환
- 거부: AccessDeniedException 예외를 ExceptionTranslationFilter로 전달
참고
스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 인프런 | 강의
초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과
www.inflearn.com
728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- claude
- 베리 심플
- oracle
- Java
- mybatis config
- LocalDate
- 북리뷰
- config-location
- springboot
- localtime
- input
- LocalDateTime
- rocky
- docker
- k8s
- intellij
- Linux
- window
- Spring
- jQuery
- maven
- svn
- 오라클
- JavaScript
- mybatis
- Spring Security
- Bash tab
- Kotlin
- Mac
- elasticsearch
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함
반응형
250x250