Token , Session
프론트 입장에서 생각해보자.
Session과 Token 모두 베이스는 쿠키저장이기 때문에 프론트에서는 차이가 모호하다고 할 수 있다.
이는 동작 방식을 보면 알수 있다.
Token 의 동작방식
로그인시 서버에서 token을 받아옴
서버에서 받아온 token이 브라우저에 저장됨 ( persistence cookie )
요청 시 헤더에 저장해 놓은 쿠키를 껴서 보내줌
서버측에서 쿠키를 보고 판단해 알맞을 경우 response를 보내줌
Session 의 동작방식
로그인시 서버에서 세션ID를 받아옴
클라이언트 측에 받아온 세션 ID 가 브라우저에 저장됨 ( session cookie )
요청 시 헤더에 저장해놓은 sessionId 껴서 보내줌
서버측에서 sessionId를 보고 저장소 에서 비교분석해본 뒤 알맞을 경우 response 보내줌
token 과 sessionId 단어차이를 빼면 거의 동작방식이 비슷해 보인다.
특징을 잘 고려해서 구분하여 사용하도록 하자. 요즘 대세는 jwt 라고함,,,
Session 방식 장단점
장점
- 보안 부분에서 좋다 ( 유저가 받을 수 있는건 sessionId 가 끝. 보안 측면에서 좋아보인다. 하지만 절대적인건 없다. ex) 세션하이재킹 등 )
단점
- 서버메모리를 사용해서 관리해야하기 때문에 서버에 부하가 걸린다.
persistence cookie 특징
- 디스크에 쿠키 저장 => 브라우저를 닫아도 남아있음
session cookie 특징
- 메모리에 쿠키 저장 => 브라우저를 닫으면 휘발됨
JWT Token
header, payload, signature 세가지로 이루어져있다.
header : 토큰의 타입과 어떤 알고리즘을 쓸거야 ? ex) hs256
payload : {name : value} 형태의 정보를 갖고있는 부분. body라고 할수 있음
signature : secretKey 를 담고 있음 ( 약속한 secret key 를 이용해 검증 가능 )