계속 스스로 물어볼때마다 대답을 못한다... !!!
추가적인 살을 더해가면서 수정해 나가자
http란, 웹상에서 서버와 클라이언트가 통신할때 사용하는 tcp 기반 하이퍼텍스트 전송 프로토콜입니다.
http는 tcp를 기반으로 동작하고 있습니다.
하지만 http는 통신할때, 페이지가 바뀌면 매번 인증을 해야한다는 단점과, 모든 사용자들의 상태를 알고있으면 서버 리소스등 낭비가 심해서, 비연결성과 비상태성이라는 특징을 가집니다.
이러한 특징들로 인해서 사용자정보를 알아내는 방법으로 세션과 쿠키로 나뉩니다.
쿠키 : key, value, 요청시간, 도메인, 경로
세션은 서버, 쿠키는 브라우저에 저장이 됩니다. 서버에 저장되기때문에 보안측면에서 유리하고, 브라우저가 종료될 때 까지 유지가 됩니다.
쿠키는 브라우저에 저장이 되고, 키와 밸류로 이루어져있습니다. 인증에 필요한 정보를 가지고 있어서, 서버가 쿠키를 통해서 빠르게 사용자 식별이 가능하게 도와줍니다.
쿠키를 통해서 서버가 세션을통해서 해야할 일들을 줄여주기때문에, 서버의 부담을 줄여주는 장점을 기대할 수 있다.
인증정보 등 민감한 정보는 탈취될 위험이 있는 쿠키보다는 세션에 저장한다.
세션을 사용하면 세션안에 아이디나 닉네임과 같은 정보가 있고, 세션아이디가 있기 때문에 사용자 회원 리포지토리에는 접근할 필요가 없지만, 세션 저장소를 활용해야하기 때문에, 요청이 많아질 경우 역시 서버 리소스에 부담이 된다.
따라서 나온것이 토큰방법이다.
서명, 헤더, 페이로드 세가지로 구성된 JWT를 통해서 인증을 한다.
서버 입장에서 액세스와 리프레시 토큰만 주고나면 사용자의 상태를 알 필요가 없고, 로그인이 필요하면 엑세스토큰으로 요청을하면 서버에서 식별이 가능하다.