CORS (Cross-Origin Resource Sharing) 이란? A라는 도메인에서 제공되는 FE에서 → B라는 도메인으로 제공되는 BE에 HTTP 요청을 했을 경우, 브라우저는 이를 서로 다른 도메인에서 리소스를 공유하는 것이라 판단하고 그것을 방지하기 위해 호출을 금지하는 것이다. Preflight Request 브라우저에서 실제 HTTP 요청을 보내기 전 브라우저 스스로 이 요청을 보내는 것이 안전한지 예비 요청을 하게 되는데 이게 바로 Preflight Request라고 합니다. 이 Preflight Request는 OPTION 메소드를 이용해 요청하는데 서버에서 보내준 응답 헤더에 Access-Controller-* 헤더들이 잘 구성되어있는지 확인합니다. GET, POST, HEAD 요청..
Spring Boot 2.7 (Spring 5.7.0-M2) 부터 WebSecurityConfigurerAdapter는 Deprecated가 되었다. Spring Security without the WebSecurityConfigurerAdapter In Spring Security 5.7.0-M2 we deprecated the WebSecurityConfigurerAdapter, as we encourage users to move towards a component-based security configuration. authz .anyRequest().authenticated() ) .httpBasic(withDefaults()); } } 스프링은 SecurityFilterChain 빈을 등록하..
Spring boot + Security 를 사용하고 있는데 에러 코드 마다 페이지를 보여주고 싶은데 어떻게 해야하는지 방법을 생각해보다가 두가지 방법이 생각났습니다. 1. EntryPoint, Handler 사용 authenticationEntryPoint, accessDeniedHandler에서 사용자에게 해당 에러 페이지로 리다이렉션을 시키는 방법입니다. Security Config /* Security Config */ @Override protected void configure(HttpSecurity http) throws Exception { http // .. .exceptionHandling() .authenticationEntryPoint(new MyAuthenticationEntryP..
이 포스트는 데어 프로그래밍님의 유튜브 강의를 듣고 나서 정리한 글입니다. 로그인 요청이 오면 사용자 인증 후 JWT 토큰을 생성하여 클라이언트에게 응답해줬습니다. 이제 사용자는 매번 로그인을 하는 것이 아니라, 이전에 발급 받은 JWT 토큰을 들고 서버로 요청을 하면 서버는 해당 JWT 토큰을 검증하여 유효한 토큰인지 확인 후 클라이언트 요청을 처리해주면 됩니다. 이번 시간에는 JWT 토큰을 검증할 수 있는 Filter를 생성해보도록 하겠습니다. BasicAuthenticationFilter 상속 헤더에 Authorization : Basic *** 방식으로 인증을 시도하면 BasicAuthenticationFilter에서 해당 토큰을 검증하여 인증을 처리하는데, 우리는 Basic 방식이 아닌, JWT..
이 포스트는 데어 프로그래밍님의 유튜브 강의를 듣고 나서 정리한 글입니다. UsernamePasswordAuthenticationFilter에 대해서는 아래 포스팅을 참조하시길 바랍니다. UsernamePasswordAuthenticationFilter 동작 방식에 대해서 SpringSecurity Filterchain 에는 여러 종류에 필터가 존재하지만, 이번 시간에는 로그인 인증을 처리하는 UsernamePasswordAuthenticationFilter에 대해서 알아보겠습니다. Login 인증 로직 flow POST "/login".. iseunghan.tistory.com 로그인 요청을 처리하기 위해서는 SpringSecurityFilterChain 중에 로그인 인증을 처리하는 필터인 Userna..
SpringSecurity Filterchain 에는 여러 종류에 필터가 존재하지만, 이번 시간에는 로그인 인증을 처리하는 UsernamePasswordAuthenticationFilter에 대해서 알아보겠습니다. Login 인증 로직 flow POST "/login" 으로 요청을 보내면? Postman으로 body에 username, password를 넣고 "/login"으로 요청을 보내면, UsernamePasswordAuthenticationFilter가 요청을 낚아채고 username, password를 검증합니다. 그 과정에서 우리가 오버라이딩한 UsernamePasswordAuthenticationFilter.attemptAuthentication 메소드가 호출이 됩니다. POST로 요청이 왔..