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는 아무런 인증없이 접근이 가능함.
DelegatingFilterProxy Servlet Filter는 스프링에서 정의된 빈을 주입해서 사용할 수가 없음. 서버 구동시에 Spring Security가 자동으로 보안을 잡아주는데 구동시에 DelegatingFilerProxy가 생성됨. DelegatingFilerProxy는 특정한 이름을 가진 스프링 빈을 찾아 그 븐에게 요청을 위임. springSecurityFilterChain 이라는 이름으로 생성된 빈을 ApplicationContext 에서 찾아 요청을 위임함. DelegatingFilerProxy가 보안처리를 하는 것이 아님. FilterChainProxy springSecurityFilterChain 의 이름으로 생성되는 빈 DelegatingFilerProxy 로부터 요청을 위임..
CSRF란? 공격자가 이미 한 웹사이트의 쿠키를 발급 받은 사용자에게 가짜 웹사이트를 보내서 이미지를 클릭하게 만들 경우, 공격자가 웹 사이트에 사용자라고 인식 하게 만들어 보안을 해지시키는 방법을 말함. Spring CSRF 사용자가 접속 시 인증이된 경로로 들어오는 것인지 확인하여 보안에 대한 문제점을 해결한 방식임. 사용자가 로그인시 랜덤으로 생성되는 CSRF 토큰을 발행하고 그 값을 사용자가 가짐 사용자가 재 접속시 가지고 있던 CSRF 토큰을 서버에 건내고 서버는 그 값이 자신이 발급한 토큰이 맞는지 확인함. Client 쪽 form에 저장되는 코드 Spring Security 보안 설정 방법 http.csrf() : 기본 활성화되어 있음 http.csrf().disabled() : 비활성화
ExceptionTranslationFilter FilterSecurityIntercepterFilter 직전에 수행되는 필터가 ExceptionTranslationFilter 이다. AuthenticationException 인증 예외처리가 일어나면 AuthenticationEntryPoint 호출하고 >> 로그인 페이지로 이동 >> 401 오류 코드를 전달함. 인증 예외가 발생하기 전 사용자가 보낸 요청정보를 저장 RequestCashe - 사용자가 이전에 보낸 요청 정보를 세션에 저장하고 이를 꺼내 오는 캐시 메커니즘 SaveRequest - 사용자가 요청했던 request 파라미터 값들, 그 당시의 헤더 값들 등이 저장됨. AccessDeniedException 사용자가 어떠한 자원에 접근하려고 ..