Token , Session

·

2 min read

프론트 입장에서 생각해보자.
Session과 Token 모두 베이스는 쿠키저장이기 때문에 프론트에서는 차이가 모호하다고 할 수 있다.
이는 동작 방식을 보면 알수 있다.

Token 의 동작방식

  1. 로그인시 서버에서 token을 받아옴

  2. 서버에서 받아온 token이 브라우저에 저장됨 ( persistence cookie )

  3. 요청 시 헤더에 저장해 놓은 쿠키를 껴서 보내줌

  4. 서버측에서 쿠키를 보고 판단해 알맞을 경우 response를 보내줌

Session 의 동작방식

  1. 로그인시 서버에서 세션ID를 받아옴

  2. 클라이언트 측에 받아온 세션 ID 가 브라우저에 저장됨 ( session cookie )

  3. 요청 시 헤더에 저장해놓은 sessionId 껴서 보내줌

  4. 서버측에서 sessionId를 보고 저장소 에서 비교분석해본 뒤 알맞을 경우 response 보내줌

token 과 sessionId 단어차이를 빼면 거의 동작방식이 비슷해 보인다.
특징을 잘 고려해서 구분하여 사용하도록 하자. 요즘 대세는 jwt 라고함,,,

Session 방식 장단점

  • 장점

    • 보안 부분에서 좋다 ( 유저가 받을 수 있는건 sessionId 가 끝. 보안 측면에서 좋아보인다. 하지만 절대적인건 없다. ex) 세션하이재킹 등 )
  • 단점

    • 서버메모리를 사용해서 관리해야하기 때문에 서버에 부하가 걸린다.
  • 디스크에 쿠키 저장 => 브라우저를 닫아도 남아있음
  • 메모리에 쿠키 저장 => 브라우저를 닫으면 휘발됨

JWT Token

  • header, payload, signature 세가지로 이루어져있다.

  • header : 토큰의 타입과 어떤 알고리즘을 쓸거야 ? ex) hs256

  • payload : {name : value} 형태의 정보를 갖고있는 부분. body라고 할수 있음

  • signature : secretKey 를 담고 있음 ( 약속한 secret key 를 이용해 검증 가능 )