Spring Security - UsernamePasswordAuthenticationFilter Spring Security 에서 Form Login 인증을 처리하는 필터이다. 이전에 Spring Security 아키텍쳐를 살펴볼때 디버깅을 통해 살펴보았던 Filter이다. UsernamePasswordAuthenticationFilter username, pasword로 Authentication객체를 생성하고, AuthenticaionManager를 사용하여 인증을 시도한다. 여러개의 AuthenticationProvider를 사용하여 인증을하는데 그중에서도 DaoAuthenticationProvider를 사용한다. DaoAuthenticationProvider는 UserDetailsService를..
Spring Security - Logout Filter Spring Security 에서 Logout 처리를 하는 Filter인 LogoutFilter를 알아보자. LogoutFilter LogoutFilter는 크게 두가지 요소로 구분된다. 1.Logout handler 2.Logout Success Handler LogoutHandler 다른 여러 로그아웃 핸들러를 감싸는 컴포짓 객체이다. 사실상 다른 여러개의 로그아웃 핸들러를 사용한다. 기본적으로 2개의 로그아웃 핸들러가 사용된다. 1.CsrfLogoutHandler 2.SecurityContextLogoutHandler LogoutSuccessHandler 로그아웃 처리를 하고난 뒤 어떻게 처리를 할것인지 를 결정하는 핸들러이다. 기본 핸들러는..
Spring Security - CsrfToken CSRF Token 활용 방법을 살펴보자. CSRF Token CSRF Attack을 방지하기 위한 매커니즘 임의의 토큰을 발급하여 리소스에 대한 변경 요청일 경우 Token값을 확인하여 현재 서비스에서 제공한 Form을 통해 정상적인 요청을 보낸것인지 확인한다. 만약 CsrfToken이 존재하지않거나, 일치하지 않는경우 4XX 응답을 보낸다. thymleaf2.0 이상 혹은 jsp > spring:form tag를 사용한다면 csrf token을 자동적으로 넣어준다. CSRF Token 활용해보기 SignUpController CSRF Token을 활용한 Form 회원가입을 통해 테스트를 진행해 보자. 먼저 회원가입과 관련된 Controller를 생성한..
Spring Security - CsrfFilter Security FilterChain에서 4번째로 실행되는 필터 CsrfAttack을 방어하는 Filter이다. CSRF 사용자가 원치않는 요청을 악의적으로 임의로 만들어 보내는 기법이다. CORS 를 사용할때 특히 주의 해야한다. 타 도메인에서 보내는 요청을 허용하기 때문에 취약점이 생기기 쉬움 CSRF Token을 사용하여 리소스를 변경하는 요청의 경우 서버에서 보내준 토큰 여부를 확인하여 공격을 방지한다. CSRF Attack 특정 웹사이트에서 어떠한 은행사이트에 계좌이체요청을 하는 Form을 생성해두고 클릭을 유도한다. 해당 Form을 클릭하는 순간 내 은행에서 계좌이체요청이 가게되고, 내 계좌에서 공격자의 계좌로 이체가 되어버림. 이러한 공격을..