AccessDecisionManager 인증 정보, 요청정보, 권한정보를 이용해서 사용자의 자원 접근을 허용할 것인지 거부할 것인지 최종 결정하는 주체 여러 개의 Voter들을 가질 수 있으며, Voter들로부터 접근허용, 거부, 보류에 해당하는 각각의 값을 리턴 받고 판단 및 결정 최종 접근 거부시 예외시킴. 접근 결정의 세가지 유형 AffirmativeBased 여러 개의 Voter 클래 중 하나라도 접근 허가로 결론을 내면 접근 허가로 판단 ConsensusBased 다수표(승인 및 거부)에 의해 최종 결정을 판단한다 동수일 경우 기본은 접근허가이나 allowEqualGrantedDeniedDecisions를 false로 설정 할 경우 접근 거부로 결정. UnanimousBased 모든 보터가 만장..
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 객체를 할당 하고 있는 것 (기본값으로..
문제 successhandler 또는 failurehandler 또는 deniedhandler 에 걸쳐서 한글 데이터를 response 할 시 참고 하시기 바랍니다. 한글이 나와야 하는 부분에 ??? 로 처리가 되고 있다면 해당 글을 보고 처리 해보시길 바랍니다. Form 형식 Post - redirect시 한글 깨짐 문제 해결방법 AuthenticationFailureHandler에서 error에 대한 메세지를 경우에 따라 적용하였는데, 해당 값이 URL 파라미터 값으로 넘어 가면 한글이 ???? 처리가 되었음. 해당 부분을 처리 하기위해 URLEncoder클래스의 encode 메소드를 사용하여 처리를 하였음. @Component public class CustomAuthenticationFailure..