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 로부터 요청을 위임..
개요 자바스크립트를 쓰다 보면 코드를 잘 짜고 테스트 해보려고하면 갑자기 오류가 뜰 때가 있다. 그렇다면 그러한 경우 Script문이 Body 문보다 먼저 실행이 되어서 script문들이 수행이 안되고 있다고 생각해봐야 한다. 기본적으로 Script문은 Head 태그 안에 있게 되는데 그러한 경우 html이 위에서 부터 코드를 읽다가 script 태크를 만나게 되면 body 문으로 가지 않고 script문을 읽기 시작한다. 그렇다면 그러한 문제를 해결 하기위해 어떻게 해야 하는 것인지 해결방법을 알아보자. 해결방법 여러가지의 해결 방법이 있지만 여기서는 2가지만 알려드리겠습니다. Script 태그에 defer를 추가 해당 방법을 사용하면 html이 script 태크를 만나면 body문과 같이 읽기 시작함..
CSRF란? 공격자가 이미 한 웹사이트의 쿠키를 발급 받은 사용자에게 가짜 웹사이트를 보내서 이미지를 클릭하게 만들 경우, 공격자가 웹 사이트에 사용자라고 인식 하게 만들어 보안을 해지시키는 방법을 말함. Spring CSRF 사용자가 접속 시 인증이된 경로로 들어오는 것인지 확인하여 보안에 대한 문제점을 해결한 방식임. 사용자가 로그인시 랜덤으로 생성되는 CSRF 토큰을 발행하고 그 값을 사용자가 가짐 사용자가 재 접속시 가지고 있던 CSRF 토큰을 서버에 건내고 서버는 그 값이 자신이 발급한 토큰이 맞는지 확인함. Client 쪽 form에 저장되는 코드 Spring Security 보안 설정 방법 http.csrf() : 기본 활성화되어 있음 http.csrf().disabled() : 비활성화
ExceptionTranslationFilter FilterSecurityIntercepterFilter 직전에 수행되는 필터가 ExceptionTranslationFilter 이다. AuthenticationException 인증 예외처리가 일어나면 AuthenticationEntryPoint 호출하고 >> 로그인 페이지로 이동 >> 401 오류 코드를 전달함. 인증 예외가 발생하기 전 사용자가 보낸 요청정보를 저장 RequestCashe - 사용자가 이전에 보낸 요청 정보를 세션에 저장하고 이를 꺼내 오는 캐시 메커니즘 SaveRequest - 사용자가 요청했던 request 파라미터 값들, 그 당시의 헤더 값들 등이 저장됨. AccessDeniedException 사용자가 어떠한 자원에 접근하려고 ..