[개발지식] 쿠키&토큰&세션 그리고 JWT/ TIL # 55

velg·2021년 10월 4일
0

개발지식

목록 보기
7/7

쿠키 & 토큰 & 세션 그리고 JWT에 대해 알아보자

어디에 쓰는 물건들인가요

쿠키, 토큰, 세션, JWT 모두 서버와 통신하면서 사용되는 키워드들이다
유저가 웹 사이트에 방문하여 로그인하는 상황에서 위 키워드들은 언제 어디에 쓰이는 것인지 살펴보자

쿠키

HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다 - MDN

우리가 웹 페이지에 접속하면 브라우저에서 서버에 "해당 페이지를 보여줘!" 하고 요청을 하는데 이 때 서버에서는 페이지에 관련된 정보와 함께 쿠키를 보낸다

이 쿠키에는 해당 사용자의 브라우저에 저장할 정보가 들어가 있는데 이를 토대로 사용자에게 로그인 상태 유지와 같은 기능을 제공할 수 있다 (대부분 같은 브라우저에서 요청을 했는지 판별시 사용한다)

브라우저는 사용자를 기억하지 못한다
브라우저는 사용자를 기억하지 못한다 그 이유는 HTTP 프로토콜이 상태가 없는(stateless)이기 때문이다
따라서 쿠키와 같은 것에 정보를 담아 사용자를 구별해야한다

토큰

쿠키는 '웹 브라우저에 전송하는 작은 데이터 조각'이다
때문에 브라우저 환경이 아니면 쿠키를 사용할 수 없고 이를 대체하기 위한게 토큰이다

토큰은 특별한 무언가가 아니라 그저 string이며 이안에는 다음에 설명할 세션의 ID가 담겨 있다

세션

세션은 서버의 DB에 사용자의 정보를 저장하는 개념으로 사용자가 세션 ID를 담은 쿠키나 토큰을 서버에 보내며 요청하면 서버는 세션 ID를 통해 DB에서 해당 사용자에 대한 정보를 찾는다

쿠키 VS 세션
쿠키는 사용자의 브라우저에 저장된 정보를 통해 서버와 통신하는 것!
세션은 서버의 DB에 저장된 정보를 통해 사용자와 통신하는 것! (여기서 구별을 위해 쿠키, 토큰에 세션 ID를 담아서 서버에 보낸다)

JWT

Json Web Token 을 말하며 사용자 정보를 담은 토큰 형태의 데이터이다
토큰엔 세션 ID가 담겨 있지만 JWT는 형태만 토큰일뿐 사용자의 정보가 암호화되어 들어있다

등장 이유와 사용

세션 방식을 이용하면 사용자가 늘어남에 따라 DB 크기도 커져야하며, 요청마다 DB에서 사용자를 찾아야 하는 단점이 있는데 이를 보완한 방법이 JWT를 이용하는 방식이다

JWT는 예를 들어 사용자의 아이디, 패스워드가 들어온다면 이를 해당 서버의 방식에 따라 암호화시켜 토큰 형태로 사용자에게 보내주고, 이 암호화된 토큰을 통해 사용자를 판별하는 방식이다

때문에 DB에 따로 사용자 정보를 저장할 필요 없이 인증 절차를 진행할 수 있다

세션 VS JWT
JWT는 단순히 사용자를 인증하고 그에 따른 기능을 제공하는데 그치지만 세션 방식은 DB에 사용자의 정보를 저장해서 사용함으로 훨씬 다양한 기능을 구현해 사용자에게 제공할 수 있다
때문에 무엇이 좋은 방법이라고 할 순 없고 상황마다 알맞은 방식으로 서버와 통신을 하는게 좋다

profile
초보 개발자

0개의 댓글

관련 채용 정보