본문 바로가기

Spring/Spring Security6

[Spring Security] Custom Filter 만들기 프로젝트에 SprinSecurity를 적용해 개발하다 보면 SprinSecurity에서 기본으로 제공하는 Filter 뿐만 아니라 개발자가 원하는 방식으로 동작하는 필터가 필요할 때가 있다. 이러한 경우에 직접 Filter를 구현하면 된다. Custom Filter를 구현하기 위해서는 다른 필터와 마찬가지로 Filter Interface를 구현해야 한다. 그러나 Filter Interface를 직접 구현하게 되면 중복 실행 문제가 있어서 대부분의 경우 OncePerRequestFilter를 구현하기를 권장한다. 예시 1 1개의 요청이 들어온 시점부터 끝날 때까지 거린 시간을 log로 기록한다. stopwatch로 시작하고 모든 필터체인과 요청이 끝난 뒤에 작업한 시간을 기록한다. 내용을 보면 StopW.. 2023. 10. 29.
[Spring Security] Spring Security 테스트하기 SpringSecurity를 사용하는 프로젝트에서의 테스트는 SpringSecurity가 없는 테스트와 다른 부분이 있다. SpringSecurity의 테스트에서는 User가 로그인한 상태를 가정하고 테스트해야 하는 경우가 많은데 인증을 받지 않은 상태로 테스트를 하면 SpringSecurity에서 요청 자체를 막아버려서 테스트가 제대로 동작하지 못한다. 이런 문제를 해결하기 위해 spring-security-test를 사용하여 해결할 수 있다. spring-security-test를 사용하면 테스트 직전 Mock User를 인증시켜놓고 테스트를 구동할 수 있다. build.gradle에 의존성을 추가한다. Test 실행 전 MockMvc에 springSecurity (static 메서드)를 설정한다. .. 2023. 10. 29.
[Spring Security] Spring Security 부가기능 📌 필터 비활성화 http..disable(); 과 같이 특정 필터가 동작하지 않도록 비활성화 처리 할 수 있다. 📌 로그인 & 로그아웃 페이지 관련 기능 폼 로그인의 로그인 페이지를 지정하고 로그인에 성공했을 때 이동하는URL을 지정한다. 로그인 페이지는 권한에 상관없이 접근 가능하도록 열어둔다. 만약 로그인 페이지를 지정하지 않는다면 Spring Security가 기본으로 제공하는 로그인 화면이 제공된다. 로그아웃 URL을 지정할 수 있고 로그아웃에 성공했을 때 이동하는 URL도 지정할 수 있다. 📌 Url Macher 관련 기능 antMatcher "/", "/home", "/signup" 요청을 모두에게 허용한다. mvcMatchers "/signup", "/signup/", "/signup.h.. 2023. 10. 29.
[Spring Securiry] Security Filter SecurityContextPersistenceFilter BasicAuthenticationFilter UsernamePasswordAuthenticationFilter CsrFilter RememberMeAuthenticationFilter AnonymousAuthenticationFilter FilterSecurityInterceptor ExceptionTranslationFilter 스프링 시큐리티의 동작은 사실상 Filter로 동작한다고 봐도 무방하며 다양한 필터들이 존재하고 이 Filter들은 각자 다른 기능을 한다. 이런 Filter들은 제외할 수 있고 추가할 수 있으며 필터에 동작하는 순서를 정해줘서 원하는 대로 동작하게 할 수 있다. FilterChainProxy에서 doFilterInt.. 2023. 10. 28.