Authorization
무엇이 허가되었는지 증명하는 것이다.
-
SpringSecurity 는 Authentication 과 Authorization 으로 영역을 나눈다.
-
Authentication 영역에서는 사용자가 자원에 접근하기위해 Request 를 보낼 때 인증 여부를 확인한다.
-
Authorization 영역에서는 인증이 완료 된 후 사용자가 특졍 자원에 접근할 때에 사용자의 권한이 특정 자원의 접근 권한에 충분하는 지의 심사를 한다.
SpringSecurity 가 지원하는 권한 계층
-
웹 계층 : Presentation Tier 의 URL 요청 단위 레벨 보안
-
서비스 계층 : Service Tier 의 메서드 단위 레벨 보안
-
도메인 계층(Access Control List, 접근 제어 목록) : Persistence Tier 의 영속 영역 접근 시의 사용할
객체단위 레벨 보안
현재는 웹 계층과 서비스 계층 보안에 대해 다룬다.
FilterSecurityInterceptor
아래 이미지는 FilterChainProxy의 Filter 명단
-
FilterChainProxy 의 Filter Type Bean 중 마지막에 위치한 Filter
-
특정 자원에 대한 요청의 승인, 거부 를 최종적으로 결정한다.
-
Authentication 객체 없이 보호된 자원에 접근할 경우 AuthenticationException 발생 ( ExceptionTranslationFilter > AuthenticationEntryPoint )
-
인증 후 자원 접근 권한이 없을 경우 AccessDeniedException 발생 (Anonymous or RememberMe , 권한 부족시로 분기)
-
권한 제어 방식 중 HTTP 자원의 보안을 처리함
-
권한 처리를 AccessDecisionManager에게 위임
FilterSecurityInterceptor 의 동작 구조
-
사용자의 Request
-
FilterSecurityInterceptor 동작
-
FilerSecurityInterceptor가 Authentication 객체 존재 여부 확인
-
Authentication 객체가 존재하지 않을 시 AuthenticationExcpetion 발생( ExceptionTranslationFilter > AuthenticationEntoryPoint )
-
Authentication 객체가 존재할 시 SecurityMetadataSource 호출
-
SecurityMetadataSource 는 요청자원에 Mapping 된 Authority가 null인지 여부를 검사
-
자원에 Mapping된 Authority가 null 일 경우 자원접근 허용
-
자원에 Mapping 된 Authority가 null이 아닐 경우 AccessDecisionManager 작동
-
AccessDecisionManager 는 AccessDecisionVoter 에게 심의를 위임
-
AccessDecisionVoter 는 심의 결과를 AccessDecisionManager 에게 반환함.
-
AccessDecisionManager 는 AccessDecisionVoter 에게 받은 심의 결과를 판단
-
승인 불가라면 AccessDeniedException( ExcepetionTranslationFilter > AccessDeniedHandler( 익명사용자거나 RememberMe 기능사용 중 일 경우 AuthenticationEntryPoint )
-
승인 허가라면 자원 접근을 허용한다.
'springframework > 시작하자SpringSecurity' 카테고리의 다른 글
24.SpringSecurity 필터, 아키텍쳐 정리 (0) | 2020.09.23 |
---|---|
23.AccessDesicionManager, AccessDecisionVotor (0) | 2020.09.22 |
21.AuthenticationProvider (0) | 2020.09.22 |
20.AuthenticationMananger를 구현한 ProviderManager (0) | 2020.09.22 |
19.Authentication Flow (0) | 2020.09.22 |