세션과 jwt의 차이점

김민섭·2022년 10월 30일
0

JavaScript

목록 보기
7/7

이 내용은 유튜브 채널 노마드 코더의 니꼬쌤 강의를 듣고 작성한 내용입니다.
아직 공부하고 있는 학생이라 혹시 잘못된 내용이나 추가해야 할 내용이 있다면 말씀해 주세요!

쿠키

세션과 jwt에 대해서 알려면 우선은 쿠키에 대해서 알고 있는 것이 좋다.

http 프로토콜의 모든 요청은 독립적으로 유지된다.
그 말은 하나의 요청이 끝나면 서버는 유저를 기억하지 못한다는 것이고, 요청할 때마다 우리가 누구인지 알려줘야 한다는 것이다.

쿠키란 요청한 사람이 누구인지에 대한 정보를 서버에게 전달하는 매개체이다.

세션

세션의 과정을 살펴본다면
1. 회원가입이 되어있는 "striker" 라는 유저가 id와 비밀번호를 서버에 보낸다
2. 비밀번호가 일치한다면 서버는 세션 DB에 "striker"라는 유저를 생성한고 세션ID를 쿠키에 담아서 브라우저에게 보낸다
3. 다음 요청시에 브라우저는 요청과 함께 쿠키를 서버에 보낸다
4. 서버는 들어오는 세션ID와 함께 들어오는 쿠키를 확인 (아직 서버는 유저가 누구인지를 모른다)
5. 서버는 해당 세션ID를 가지고 세션 DB를 확인할 것이고 일치하는 "striker"라는 유저의 세션ID임을 확인한다
6. 새로운 요청이 있을때마다 해당 프로세스를 반복한다

포인트는
1. 중요한 유저 정보는 모두 서버에 있다는 것
2. 브라우저가 가지고 있는 것은 세션ID 단 한개
3. 요청이 있을때마다 DB를 생성하고 확인해야 한다
4. 유저가 늘어날수록 서버 DB의 부담이 늘어난다

JWT

jwt는 토큰 방식이다.

토큰이란?
이상하게 생긴 string이다.
쿠키와 같은 역활을 해준다.

jwt의 작동 방식을 보면
1. "striker"라는 유저가 로그인을 위해 유저명과 패스워드를 보낸다
2. 정보가 일치한다면 서버는 DB에 정보를 생성하지 않고 시그니처 알고리즘을 이용하여 사인을 한다
3. 사인된 정보를 토큰의 형식으로 브라우저에게 보낸다

포인트
jwt는 DB를 건드리는 대신 정보를 사인하고 전달하는 것이 전부
브라우저가 서버에 요청을 보내려면 사인된 정보를 보내고 서버는 해당 사인이 유효한지를 확인
=> 해당 사인이 유효하다면 우리를 유저로 인증함

주의할 점
jwt는 암호화 되지 않은 정보라는 것
누구나 열어서 해당 컨텐츠를 볼 수 있다
즉, 개인정보를 토큰에 담아주면 절대 절대 절대 안된다!!!!

정리

세션에서 모든 정보는 세션DB에 저장되어 있다
세션DB에 모든 인증 정보가 저장되어 있기 때문에 넷플릭스나 인스타 처럼 계정 공유 숫자 제한이나 계정 강제 로그아웃 기능을 사용할 수 있다.
단, DB를 사야하고 유지해야 하기 때문에 유저가 많아지면 많아질수록 비용이 늘어난다

jwt에서는 사인이 유효한지만 확인한다
세션같은 기능들을 사용할 수는 없지만 DB를 따로 살 필요가 없다

profile
getting ready to run

0개의 댓글