유투버 노마드 코더에서 다룬 내용으로 세션 과 토큰을 비교 하는 내용을 다룬다
여기서 "쿠키"는 사용자 인증에 관한 내용으로 사람들이 자주 오해 하는지 추가적으로 내용을 다뤘다.
사용자 인증을 만들어야 한다면 쿠키, 세션, 토큰, JWT 같은 단어를 접하게 된다.
각 단어 별 정의가 어떤지 알아 보도록 하자
1. 자주 들어오는질문
쿠키 vs 토큰
이 질문은 잘못된 질문이다.
왜냐하면 "쿠키는 서버에서 브라우저에 저장시킨 데이터" 이기 때문이다.
쿠키 특징
- 쿠키는 도메인에 따라 제한이 된다.
- 쿠키 저장 시간은 따로 설정할수있다.
세션(Session) vs 토큰(JWT)
서버는 한번 요청을 끝낸후 다음 요청이 들어와도 사용자가 누구인지 구분을 하지 않는다.
그래서 이를 구분하기 위한 방법이 세션(Session)과 토큰(JWT)이다.
세션(Session)
세션(Session)은 사용자 인증(로그인)이 끝난 정보를 서버의 세션(Session)DB에 사용자 정보를 입력하게 된다.
이때 세션(Session) Index를 브라우저의 쿠키에 저장을 하게 되고 이후 작업은 서버에 자동으로 보내지는 쿠키를 통해 사용자를 구분하여 동작한다.따라서. 사용자는 세션 ID를 가지고 있으며, 서버에는 사용자 정보를 가지고 있다.
세션을 통해 Android and ios를 사용할수있지만 쿠키는 네이티브 앱에서 사용할수 없다!
토큰
토큰(JWT)은 사용자 인증(로그인)이 끝난후 DB에 정보를 생성하지 않고 유저 정보(중요정보 제외)를 포함해 사인 알고리즘을 통해 토큰(JWT)을 생성한다.
보통의 세션 아이디 보다 길다.
다만. 토큰은 DB가 필요없다 토큰에 저장된 사용자 정보 와 인증 코드를 분석하여 사용자 인증을 한다.
토큰 자체에 사용자 정보가 들어 있다. 따라서 토큰에 중요한 사용자 정보를 추가 하면 안된다.이후 사용자는 서버에 요청을 보낼려면 토큰을 함께 보내야 한다. 서버에서는 토큰 유효성 검사를 한후 다음 동작을 한다.
세션 vs JWT 장단점
세션
- 장점
- 모든 사용자 정보를 DB에 관리 하기 떄문에 유저를 관리 하기 쉽다.
- EX) 기기별 로그아웃, 넷플릭스와 같이 로그인 인원 제한(세션 DB가 있기 때문에)
- 단점
- 사용자 수에 따라서 DB를 더 구매 해야 한다.이에 적합한 DB는 redis(빠르고 저렴한 DB)이다.
JWT
- 장점
- 추가적인 DB가 필요 없다.(ex) QR 체크인)
- 단점
- 세션 로그아웃 과 같은 기능 추가를 못한다.
'Server' 카테고리의 다른 글
Cookie vs LocalStorage vs SessionStorage (0) | 2023.04.16 |
---|---|
Nginx WebSocket, Proxy Error (0) | 2023.04.16 |
JSON 이란? (0) | 2023.04.15 |
Client와 Server사이에 데이터 전송 구조 (0) | 2023.04.15 |
프로토콜이란? (0) | 2023.04.15 |