Over the limit

Cookie, Session, Token 그리고 JWT 본문

Web

Cookie, Session, Token 그리고 JWT

ellapk 2022. 7. 16. 16:16

Cookie

client가 사이트에 방문하면 server에 기록이 남음. 접속자에 대한 정보를

cookie에 담아둔다. 유효기간이 있음.

인증 뿐만 아니라 여러가지 정보를 저장.

 

 

stateless = 이전 request는 잊어 버린다! 요청할 때마다 우리가 누군지 알려줘야한다.

 

Session 

client가 ID/PW로 server에 요청하면 server는 sessionDB에 유저를 생성함.

이때 생기는(요청이 들어올 때 마다 생기는) 세션 ID

 

즉, 세션 ID는

sessionDB -> server -> browser로 이동하여 저장됨

이는 같은 웹사이트에서 다른 페이지로 가는 상황에 적용된다!

 

예를 들어, 책을 사기 위해 yes24에 로그인 한 후에 장바구니에 담고 다른 책을 살펴본다고 생각하자.

장바구니에 책을 담았다고, 다른 페이지로 간다고, 우리의 로그인 상태는 풀리지 않는다. 

이것들은 세션이 도와주는 것!

 

정작 중요한 정보들은 모두 서버에 있다. 세션은 그냥 유저가 갖고 있는 징검다리 일뿐

그리고, 쿠키는 세션ID를 전달하기 위한 매개체임.

 

 

-> 유저 정보가 늘어날 수록 더 많은 DB 인스턴스가 필요해진다는 단점이 있음

 

 

Token

이상하게 생긴 string. 보통 세션 ID보다 훨씬 김(쿠키는 길이 제한이 있었기에..)

토큰을 서버에 보내면, 서버는 세션 DB에서 해당 토큰과 일치하는 유저를 찾는다.

 

 

 

 

JWT(feat. Token)

토큰 형식.

유저 인증 처리시 세션 DB가 필요 없음. 서버도 유저인증한다고 많은 일 안해도 된다.

토큰에서 설명한 바와 같이 토큰을 전송시 유저를 찾는다. 대신 여기서 DB를 건드리진 않고, 다만

정보를 사인하고, 전달 하면 끝.

사인된 정보를 토큰에 보내면

 

  전송 and then, server does..
Session 방식 Client -> Server 세션 ID 세션 DB로 가서 세션 ID 찾기
Toekn 방식 (JWT)  Server- > Client 토큰 유효한지 체크, 토큰을 조작했는지 체크

 

 

 

 

 

'Web' 카테고리의 다른 글

[AXIOS] axios 다루기  (0) 2022.08.21
OAuth2.0 RFC의 Refresh Token 동작원리  (0) 2022.07.16
JPA metamodel must not be empty!  (1) 2022.05.18
ESLint란  (0) 2022.05.02
React 프론트에 백엔드 연결하기  (0) 2022.04.11