클라이언트에게서 요청을 받을 때 마다, 클라이언트의 상태를 계속해서 유지하고,
이 정보를 서비스 제공에 이용한다.
예를 들면, 유저가 로그인을 하면, 세션에 로그인이 되었다고 저장을 해 두고,
서비스를 제공할 때에도 그 데이터를 사용한다.
상태를 유지하지 않는다. 상태정보를 저장하지 않으면, 서버는 클라이언트측에서 들어오는 요청만으로만 작업을 처리한다. 이러한 상태가 없는 경우 클라이언트와 서버의 연결고리가 없기 때문에 서버의 확장성(Scalability)이 높아진다.
보안
토큰 기반 인증 시스템을 사용하여 어플리케이션의 보안을 높일 수 있습니다.
단, 토큰 기반 인증을 사용한다고 해서 무조건 해킹의 위험에서 벗어나는 것은 아니다.
mypage에서 로그인이 됐는지 안됐는지 여부가 궁금할 때, HTTP 통신은 stateless 하기 때문에 API 호출 할때 내가 누군지를 알려주는 정보를 백엔드한테 줘야한다.
그렇기 때문에 로그인 시, 프론트엔드에서는 로그인 여부를 가지고 있다가 백엔드한테 넘겨줘야한다.
id,pw 값 자체를 가지고 있으면 너무 너무 위험하니까 그 때 바로 유저 정보가 숨겨서 들어갈 만한 Access Token으로 관리하는 것이다.
토큰 기반 인증 시스템의 구현체, access token을 만드는 방법 중 하나.
토큰 기반의 인증 시스템에서 주로 사용한다
Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다.
FE->(request) BE
FE<-(response, access token) BE
백앤드에서 jwt를 생성할 때, 해당 user가 누구인지 식별할만한 정보를 담을 수 있다.
ex) user_id: 1
예를 들면 백앤드에서 받은 access token을 decode해보니 user_id: 1 라는 정보를 담고 있었다는 것을 알게 된다.
- id, pw 전달
- id, pw 일치 ok!
- jwt 전달
- 브라우저에 jwt 저장
저장하는 공간 3개
-> 로컬 스토리지(local storage), 세션 스토리지(session storage) , 쿠키(cookie)