Authorization 인증이 된 유저가 어떠한 자원에 접근할 시, 권한에 따라 허용 및 거절을 하는 것을 말함. 스프링 시큐리티가 지원 하는 권한 계층 웹 계층 URL 요청에 따른 메뉴 혹은 화면 단위 레벨 보안 (가장 많이 사용됨) 서비스 계층 화면 단위가 아닌 메소드 같은 기능 단위의 레벨 보안 도메인 계층(Access Control List, 접근제어목록) 객체 단위의 레벨 보안 FilterSecurityInterceptor 마지막에 위치한 필터로써 인증된 사용자에 대하여 특정 요청의 승인 또는 거부 여부를 최종적으로 결정 인증객체 없이 보호자원에 접근을 시도할 경우 AuthenticationException을 발생함 인증 후 자원에 접근 가능한 권한이 없을 경우 AccessDeneidExcep..
AuthenticationManager 인증을 요청하는 방식에 따라 그에 맞는 Provider에게 인증을 위임하는 클래스이다. Form 인증 요청시 ProviderManager가 provider중 인증처리를 할 수 있는지 확인 Form 인증을 담당하는 DaoAuthenticationProvider에게 인증을 위임. 인증이 되면 UsernamePasswordAuthenticationToken을 반환 받고 다시 UsernamePasswordAuthenticationFilter에게 넘김. RememberMe 인증요청시 ProviderManager가 provider중 인증처리를 할 수 있는지 확인 RememberMe 인증을 담당하는 RememberMeAuthenticationProvider에게 인증을 위임. 인..
SecurityContextPersistenceFilter SecurityContext 객체의 생성, 저장, 조회를 담당하는 Filter이다 익명사용자 새로운 SecurityContetxt 객체를 생성하여 SecurityContextHolder에 저장 AnonymousAuthenticationFilter에서 AnonymousAuthenticationToken 객체를 SecurityContext에 저장함. 인증 시 새로운 SecurityContetxt 객체를 생성하여 SecurityContextHolder에 저장 인증이 최종 완료가 되면 Session에 SecurityContext를 저장. 인증 후 Session에서 SecurityContext 꺼내어 SecurityContextHolder 에 저장 Sec..
SecurityContext Authentication 객체가 저장되는 보관소를 말한다. 필요 시 언제든지 Authentication 객체를 꺼내서 쓸 수 있도록 제공되는 클래스 이다. ThreadLocal에 저장되어 아무 곳에서나 참조가 가능하도록 설계함. Thread 마다 고유하게 할당된 구역이 있는데 그것을 ThreadLocal 이라고 말함. 인증이 완료괴면 HttpSession에 저장되어 어플리케이션 전반에 걸쳐 전역적인 참조가 가능함. SecurityContextHolder SecurityContext 객체를 저장 하고 있는 공간을 말한다. 저장하는 방식에는 여러가지가 있다 MODE_THREADLOCAL : 각 각의 쓰레드 마다 SecurityContext 객체를 할당 하고 있는 것 (기본값으로..
Authentication 유저의 정보를 가지고 인증을 하는 클래스이다. 로그인 정보를 POST 시 해당 내용을 UsernamePasswordAuthenticationFilter가 인증처리를 시작함. UsernamePasswordAuthenticationFilter 유저의 정보를 UsernamePasswordAuthenticationToken에 담은 객체를 만듬. 만들어진 Token을 AuthenticationManager 에게 인증을 위임함. AuthenticationManager 는 자신이 가지고 있는 provider에게 객체를 넘기면서 인증요청을 함. 인증이 되었다면 인증이 된 토큰을 다시 생성하여 provider가 AuthenticationManager 에게 반환함. AuthenticationMa..
필터 초기화와 다중 설정 클래스 서버에 요청시 설정 클래스 별로 보안 기능이 각각 작동이 됨. 설정클래스 별로 RequestMatcher 설정 http.antMatcher("/admin"/**) 설정클래스 별로 필터가 생성됨 FilterChainProxy가 각각의 클래스의 필터를 다 가지고 있음. 요청 Url에 따라 설정 클래스에 맞는 필터를 수행함. GET 메소드로 /admin이라는 주소를 접근 했을 때 FilterChainProxy는 Url에 따라 SecurityConfig를 매칭함. 만약 /admin 으로 접근시 login 인증을 받아야 한다고 설정 해두었다면, 접근시 인증을 받아야함. 하지만 /user는 아무런 인증없이 접근이 가능함.