Notice
Recent Posts
Recent Comments
Link
«   2026/09   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Today
Total
관리 메뉴

MGIT

[인증] Cookie & Session & Token || JWT 본문

ETC/Daily Report

[인증] Cookie & Session & Token || JWT

구구99 2023. 2. 7. 01:37

 

개인적으로 공부용 프로젝트를 하고있는데 로그인 기능과 회원가입 기능을 구현하고
token기반의 인가 방식을 사용하고 싶어 찾아보았는데
설명이 너무 잘 된 영상을 찾아서 이해한 내용을 작성.

 

1. Cookie 

정말 많이 들어보았던 그 이름 '쿠키' 문득보면 내가 알고있는 그 쿠키인가?
오래 전부터 하던 생각이다..

쿠키란?
간단히 이야기하면 서버사용자의 브라우저에 쿠키를 심어두고
사용자가 서버에 request를 할 때 마다 쿠키와 같이 요청을 보낸다.
즉, 사용자가 어떤 요청이든 서버에게 요청하면 자동적으로 쿠키가 같이 날아간다.

쿠키는 서버에서 관리하는 자원이 아니며 브라우저에서 관리되는 자원이다.

정말 간단하면서도 실제 사용도 많이 되고있지만 웹에서만 사용할 수 있는 단점이 있고,

사용자가 직접 수정할 수 있어서 보안측면에 위험성이 있다는 단점이 있다.

 

 

2. Session

세션이란?
사용자가 세션ID와 요청을 보낼 때
SessionDB와 같은 곳에서 사용자가 요청한 세션ID와 대조하여
DB에 세션ID가 있다면 사용자를 인증 해준다.

이렇게만 설명하면 이게 무슨소리인지... 싶으실 것 같습니다..
그림이 있으면 좋을테지만, 글로 한번 예를들어 설명해보겠습니다.

+)
- 사용자가 ID, PW를 적고 로그인을 요청합니다.

- 서버에서 사용자의 요청 데이터를 받고 DB에서 검증 후 실제 사용자라면
  Session DB에 세션ID를 넣어주고 사용자에게 세션ID를 넘겨줍니다.
  이 때 사용자에게 넘겨준 '세션ID'는 브라우저가 계속 들고다니게 됩니다.

- 해당 사용자가 다른페이지로 이동하거나 서버에게 무언가를 요청하게 되면
  아까 서버로부터 받았던 '세션ID'를 같이 서버에 요청하게 됩니다.

- 사용자가 보낸 세션ID를 sessionDB에서 찾고 
  SessionDB에 해당 세션ID가 있다면 인증하여 요청에 맞는 결과를 반환해줍니다.
   + 만약 SessionDB에 세션ID가 옳바르지 않거나 없다면,
      서버는 사용자가 누구인지 모르는 상황이 되게됩니다.
      왜냐? 사용자가 보내준 세션ID가 SessionDB에는 없기 때문입니다.
      이렇게 되면 인증이 실패하게됩니다.

위와같이 session방식은 사용자의 요청마다 계속 DB를 조회하게되며,

지속적으로 resouce를 소비하게됩니다.

 

 

3. Tokken (jwt)

토큰이란?
사용자가 보낸 값으로 인증을 통해 토큰을 발급하여
사용자에게 토큰이라는 값을 반환해준다. 해당 토큰은 서버에서만 인증이 이루어진다.

+)
- 사용자가 로그인 요청을 합니다.

- 서버에서 요청데이터를 받아서 DB에서 정상 처리(로그인)가 이루어지면,
  토큰이라는 것을 발급하여 서버에 토큰과 유저 정보를 저장하고 토큰을 사용자에게 반환해줍니다.

- 해당 토큰은 사용자가 요청을 서버에게 보낼 때 마다 토큰을 같이 보내게되며
  서버에서 토큰을 받아서 인증(서명) 후 사용자에게 response하는 형태이다.

Session은 지속적으로 DB와 소통하는 방면에

Tokken은 jwt에서 처리하여 인증을 해주는 형태인 만큼 개발적 자원을 많이 소비하지 않는다.

 

 

실제로 더 설명할 것이 많지만 이쯤에서 글을 마치며,

혹시나 도움되기 위한 좋은 참고 영상을 공유합니다.

 

감사합니다.

 

 

노마드 코더

(세션 vs 토큰 vs 쿠키? 기초개념 잡아드림. 10분 순삭!)

https://youtu.be/tosLBcAX1vk