Spring Security 4

Spring Security - UserDetails 대신 다른 객체 넣기

Security로 설정을 구성하다 보면 항상 자연스럽게 Authentication 객체에 Principal은 당연히 UserDetails였다. 물론 지원해주는 거니 문제 없게 사용하지만 한 번 바꿔보고 싶은 마음에 인증 절차 Provider랑 Token이랑 바꿔봤다. 애초에 인증 절차는 http.formLogin()을 활성화할 경우 UsernamePasswordAuthenticationFilter가 작동한다. 그리고 SSR 방식에서 세션을 사용하는 경우라면 거의 웬만하면 해당 FIlter로 처리하는게 적당하다고 생각하기 때문에 해당 필터를 사용한 인증방식을 그대로 사용한다. 간단한 인증 절차는 이렇다.application/x-www-form-urlencoded 1. 사용자가 application/x-ww..

Spring Security 2023.04.19

Spring Security - JWT 설정

해당 url로 { "email":"user", "password":"1111" } 데이터를 바디에 담아 요청하면 토큰이 발행되도록 만들려고 한다. Spring 2.7.0 기준 일단 먼저일반적으로 Spring Security에 로그인 요청을 날리면 UsernamePasswordAuthenticationFitler로 해당 아이디, 비밀번호 입력값이 해당 필터로 날라간다. 하지만 JWT의 경우 폼로그인이 아닌 json 데이터로 들어온 값을 DB값과 대조하여 맞을 경우 토큰을 던져줘야 한다. 그래서 UsernamePasswordAuthentciationFilter 자리를 뺏기로 했다. 하지만 UsernamePasswordAuthenticationFilter는 특징이 있어 이 특징을 잘 처리해줘야한다. 1. 해당..

Spring Security 2023.03.03

SpringSecurity - UsernamePasswordAuthenticationFilter

Spring Security에서 FormLogin 방식으로 로그인 할 경우 먼저 SecurityFilterChain 설정 메소드에서 각종 설정 변경하기 http .formLogin() .loginPage("/login") .defaultSuccessUrl("/")//로그인성공 .failureUrl("/login")//로그인실패 .usernameParameter("email")//html name 설정 .passwordParameter("password")//html name 설정 .loginProcessingUrl("/login/process") //로그인 form action url .successHandler(new AuthenticationSuccessHandler() { @Override publ..

Spring Security 2023.02.15

Spring Security - 2.7 이후 SecurityFilterChain

기존에는 WebSecurityConfugureAdapter를 상속받아 confugure 메소드를 오버라읻이하는 식으로 시큐리티를 구성했는데 2.7 이후부터는 상속받는 것이 아닌 SecurityFilterChain 을 bean으로 등록하는 형태로 변경되었다. @Configuration public class ProjectConfig extends WebSecurityConfigureAdapter{ @Override protected void configure(HttpSercurity http) throws Exception{ http.httpBasic(); http.authorizeReequests() .anyRequest().authenticated(); } 기존에는 이런식으로 구현했었는데 WebSecu..

Spring Security 2023.01.02