cors는 cross origin resource sharing의 줄임말로 쉽게 말하면 서버의 주소와 다른 도메인과 서버가 소통하게끔 하는 설정이다 ! Preflight Request : 실제 request를 보내기에 안전한지 판단하기 위해 보내는 요청 인증 헤더를 전송해 서버가 이를 허용하는 지 체크하는 테스트 요청이다 즉 서버의 cors옵션이 자신을 허용하는지 확인하는 것 실제 요청을 보낼 uri에 option method로 요청을 보내고 서버가 리턴해준 허용 method, 헤더, 쿠키 허용여부 등을 받고 이를 바탕으로 실제 요청을 보낸다. GET,HEAD,POST(Content-type 이 application/x-www-form-urlencoded, multipart/form-data, text/..
프로젝트를 진행하며 추가로 공부하게 된 부분을 정리 기존 세션방식 security에서는 formLogin처럼 로그인 페이지를 설정하고 클라이언트가 oauth로그인을 하고 서버에게 accessCode를 주면 서버에서 OAuth Provider에게 AccessCode를 들고 토큰을 발급 받아 이를 통해 자원을 요청하고 받아 처리를 하고 세션에 인증 정보를 저장했다. 하지만, JWT는 서버에서 세션을 STATELESS하게 유지한다. 즉, 해당 정보를 유지하지 않고 클라이언트에게 정보 유지를 맡기는 것 JWT로 바뀐다고해서 OAuth의 인증 방식이 바뀌는 것은 아님 구현코드 SecurityConfig, CustomOAuthSuccessHandler .and().oauth2Login() .successHandle..
JWT란 Json Web Token의 줄임말 이다. Header,Payload,Signature 3개의 부분으로 구성 됨 헤더 : 시그니처를 해싱하기 위한 알고리즘 정보들이 담겨 있음 페이로드 : 말그대로 시그니처 : 토큰의 유효성 검증을 위한 문자열 기존에 Thymeleaf를 템플릿 엔진으로 사용해서 SSR(Server Side Rendering)을 할 때에는 클라이언트와 서버가 분리되어 있지 않았기에 JWT를 이용하지 않고 세션에 보안 정보를 저장하였다. 그렇기에 타임리프의 security태그도 사용할 수 있었다. 하지만, 이렇게 SSR을 해서 세션에 보안 정보를 저장하게 된다면 CSRF공격이 가능하게 된다 CSRF : Cross Site Request Forgery 공격자의 사이트에 접속한 사용자가..