FilterSecurityInterceptor 5

25.정적 자원 관리 - WebIgnore 설정

WebIgnore Client 의 Request 후 Server 의 SpringSecurity 작동 js / css / image 파일 등의 정적자원에 대해 SpringSecurity는 보안을 검사하고 있음 사실상 정적 자원은 보안필터를 거칠 필요가 없는 경우가 많음 즉, 보안을 적용하지 않는 리소스를 설정하는 방법이다! 어떻게 설정하는가. 스프링 시큐리티 설정클래스에서 재정의 configure(WebSecurity web) web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations()); // 정적자원에 대한 경로 요청경로에 대해서 보안을 하지 않는다. @Override public void configure(WebS..

23.AccessDesicionManager, AccessDecisionVotor

AccessDecisionManager 인증정보 , 요청정보, 권한정보 를 이용해서 사용자의 자원접근 허가여부를 결정하는 주체 여러개의 Votor 를 가지며 Votor 들에게 허용, 거부 , 보류 값을 각각 리턴받아 판단, 결정한다. 접근 거부시 AccessDeniedException을 발생 AcceessDesicionManager 의 접근 결정 유형에 따른 구현객체들 AffermativeBased : Votor 클래스 중 하나라도 접근 허가를 내면 접근 허가 ConsensusBased : 다수표에 의해 판단, 동수일경우 default 값은 허가이며, allowIfEqualGrantedDeniendDecisions 속성을 false 로 주면 접근 거부 설정 됨 UnanimousBased : 하나의 Vot..

22.Authorization, FilterSecurityInterceptor

Authorization 무엇이 허가되었는지 증명하는 것이다. SpringSecurity 는 Authentication 과 Authorization 으로 영역을 나눈다. Authentication 영역에서는 사용자가 자원에 접근하기위해 Request 를 보낼 때 인증 여부를 확인한다. Authorization 영역에서는 인증이 완료 된 후 사용자가 특졍 자원에 접근할 때에 사용자의 권한이 특정 자원의 접근 권한에 충분하는 지의 심사를 한다. SpringSecurity 가 지원하는 권한 계층 웹 계층 : Presentation Tier 의 URL 요청 단위 레벨 보안 서비스 계층 : Service Tier 의 메서드 단위 레벨 보안 도메인 계층(Access Control List, 접근 제어 목록) : P..

14.DelegatingFilterProxy, FilterChainProxy

DelegatingFilterProxy Filter는 Servlet 2.3 이상부터 적용된 기술이다. Spring 에서 필터가 동작한다는 것은 SpringContext 안에 Filter들이 있다는 뜻이된다. 하지만 Filter 는 ServletContext에 존재해 영역이 다르다. 결국 Filter는 스프링 기술이나 Bean을 Injection 받을 수 없다. 이렇게 각자 영역이 다른 상태에서 Servlet Spec 에서 사용되는 Filter를 사용할 수 있게끔 하는 것이 DelegatingFilterProxy 이다. DelegatingFilterProxy 의 작동원리 SpringBean 이 Filter를 상속한다. 이는 Filter Type Bean을 의미한다. DelegatingFilterProxy ..

12.ExceptionTranslationFilter, RequestCacheAwareFilter

ExceptionTranslationFilter 크게 2가지의 Exception 을 처리한다. AuthenticationException : 인증 예외 AccessDeniedException : 인가 예외 AuthenticationException , AccessDeniedException은 누가 Throw 할까. FilterSecurityInterceptor 라는 필터이다. SpringSecurity의 보안필터 중 제일 마지막에 위치한다. FilterSecurityInterceptor 앞에 위치한 Filter 가 ExceptionTranslationFilter 이다. ExceptionTranslationFilter 는 Try-Catch 문으로 감싸서 FilterSecurityInterceptor 를 호..