728x90
쿠키
- 세션ID 등을 옮기는 시스템. 매개체
- 특정 사용자의 것을 기억하기 위해 서버는 쿠키를 이용해서 브라우저에 데이터를 넣을 수 있음
- 도메인에 따라 제한됨(유튜브가 준 쿠키는 유튜브에만 보내짐)
- 서버가 정한 유효기간이 있음(하루, 한달 등)
- 여러가지 정보(인증, 언어설정 등)를 저장할 수 있음
- 자동으로 전송됨
Stateless
- 서버로 가는 모든 요청이 이전 리퀘스트와 독립적으로 다뤄진다는 뜻
- 요청끼리 연결(메모리)이 없음
- 요청이 끝나면 서버는 사용자가 누군지 잊어버릴 것임 => 요청할 때마다 사용자가 누군지 알려줘야 함 => 세션
세션 (유저인증 O)
- 같은 웹사이트에서 다른 페이지로 이동할 때 위와 같은 프로세스 반복
- 세션을 이용해 iOS, android 앱을 만들 수 있지만 쿠키는 브라우저에만 있으니가 네이티브 앱에서 사용할 수 없음 => 토큰 사용
- 현재 로그인한 유저들의 모든 세션 ID를 DB에 저장해야 한다
- 요청이 들어올 때마다 서버는 쿠키를 받아서 세션 ID를 DB에서 찾아야 함 => 유저가 늘어남에 따라 DB 리소스가 더 필요함 => redis 사용. 해당 목적을 수행하기 위한 빠르고 저렴한 DB
- 서비스가 커지고 유저 계정을 좀 더 잘 관리하고 싶을 때 사용
[장점]
- 서버는 로그인 된 유저의 모든 정보를 저장함
- 해당 정보를 이용하면 새로운 기능들을 추가할 수 있음
- ex) 특정 유저를 쫓아내고 싶을 때 세션을 삭제해버리면 된다
- ex) 인스타그램처럼 로그인된 모든 디바이스를 보여주는데 원하지 않는 디바이스에서 강제 로그아웃을 할 수 있다.
- ex) 넷플릭스처럼 계정 공유 숫자를 제한할 수 있다. 현재 로그인을 몇 명이 했고 시청하는지 알 수 있다.
토큰
- 서버가 기억하는 이상하게 생긴 Sign한 String
- id카드처럼 서버에게 보여줘야 하는 것
JWT (유저인증 O)
- 정보를 갖고 있는 토큰
- 쿠키는 공간제약이 있는데 jwt는 제약이 없어서 세션 ID보다 훨씬 길다
- DB를 건드리지 않음
- 암호화되자 않음. 누구나 열어서 해당 컨텐츠를 볼 수 있음. 비밀번호를 JWT에 둬서는 안 됨
[장점]
- 생성된 토큰을 추적하지 않는다
- 서버가 아는 것은 토큰이 유효한가 여부일 뿐이다
- DB를 따로 살 필요가 없다
- 세션 기능(강제 로그아웃)을 할 수 없다
- 해당 토큰이 만료되기 전가지는 유효하니까 데이터를 사인하고 유저에게 보내고 해당 데이터를 돌려받을 때 유효성을 검증할 수 있다
- ex) 코로나 qr체크인 : jwt가 들어간 qr코드
'두두의 IT > Computer Science' 카테고리의 다른 글
[DB] 데이터 독립성 (0) | 2022.07.02 |
---|---|
[DB] DBMS (0) | 2022.07.02 |
WAS, Web Server, WSGI (0) | 2022.03.12 |
그림한장으로 보는 서버 최신 가이드북 (0) | 2022.03.07 |
[개발형 코딩테스트] 서버와 클라이언트 / REST API / JSON (0) | 2021.12.22 |