Authorization
- 인증이 된 유저가 어떠한 자원에 접근할 시, 권한에 따라 허용 및 거절을 하는 것을 말함.
- 스프링 시큐리티가 지원 하는 권한 계층
- 웹 계층
- URL 요청에 따른 메뉴 혹은 화면 단위 레벨 보안 (가장 많이 사용됨)
- 서비스 계층
- 화면 단위가 아닌 메소드 같은 기능 단위의 레벨 보안
- 도메인 계층(Access Control List, 접근제어목록)
- 객체 단위의 레벨 보안
- 웹 계층
FilterSecurityInterceptor
- 마지막에 위치한 필터로써 인증된 사용자에 대하여 특정 요청의 승인 또는 거부 여부를 최종적으로 결정
- 인증객체 없이 보호자원에 접근을 시도할 경우 AuthenticationException을 발생함
- 인증 후 자원에 접근 가능한 권한이 없을 경우 AccessDeneidException을 발생함.
- 권한 제어 방식 죽 HTTP 자원의 보안을 처리하는 필터
- 권한 처리를 AccessDecisionManaget에게 맡김.
- 유저가 요청을 보내오면 FilterSecurityInterceptor가 인증여부를 체크함.
- 인증 객체가 없는 유저라면 AuthenticationException을 던지고 ExceptionTranslationFilter가 그 예외를 처리함.
- 인증이 된 객체가 있다면 SecurityMetadataSource가 해당 자원에 어떤 권한이 필요한지 가져옴.
- 해당 경로에 권한이 Null 이라면 자원접근을 허용
- 접근 하는 경로에 권한이 필요하다면 접근 권한 처리를 위해 AccessDecisionManager에게 맡김.
- AccessDecisionManager는 AccessDecisionVoter에게 승인 여부를 요청함.
- AccessDecisionVoter가 낸 결과를 AccessDecisionManager가 받아 최종 결정을 내림
- 접근 권한이 거부되었으면 AccessDeniedExeption을 던짐.
'Backend > Security' 카테고리의 다른 글
HTTPS, SSL/TLS (0) | 2023.07.17 |
---|---|
AccessDecisionManager, AccessDecisionVoter (0) | 2023.01.22 |
AuthenticationManager, AuthenticationProvider (0) | 2023.01.22 |
SecurityContextPersistenceFilter (0) | 2023.01.21 |
SecurityContextHolder, SecurityContext (1) | 2023.01.21 |