본문 바로가기

회고/TIL

2023-06-19 TIL

🔸 쿠키 & 세션 & JWT

 

👉 기본적으로 위 3가지는 클라이언트와 서버간의 소통에 있어서 인증을 하기위한 수단이라고 볼수있다.

우리는 현재 RESTful한 웹을 만들기 위해 노력을 하고있다. RESTful 중 Stateless가 중요 포인트이다. 각각 요청은 개별적인 상태로 서로의 요청에 대해 독립적이기 때문에 우리는 매번 인증을 해줘야 하는 번거로움이 존재하게 되는것이다. 그때 사용되어지는 인증수단이 무엇인가에 대해서 알아볼 필요가 있다. 위 인증수단 3가지는 만료시기를 정해줄 수 있고 그에따른 활용성이 존재한다. 그럼 각각의 특징이 무엇인지 알아보자.

 

쿠키

🔥 쿠키는 클라이언트 로컬에 저장되어 관리되어지는 것.

 

  • 쿠키 최대 크기 <= 4KB , 각 도메인 당 최대 20개
  • 만료시기
  1. 웹 브라우저 종료시 ( 세션쿠키 )
  2. 지정해둔 시간 초과시 ( 지역쿠키 )
  • 서버에 부담이 가지 않음 ( ❗️ 로컬에서 관리되어지기 때문 )
  • 데이터가 암호화 되지 않기때문에 보안에 취약함
세션

🔥 세션은 서버 단에서 관리되는 것. 로그인시 인증에 성공했을경우 서버는 클라이언트쪽에 세션ID를 보내주게 된다.

쉽게 생각해서 다른나라 여행 갔을때 비자를 발급 받는것과 같다. 비자 없이 체류는 불법이기에 강퇴 조치를 당할수도 있지만, 비자가 있어서 보여주기만 하면 내 행동에 제약이 없는 상태가 될 수 있는것이다. 즉 세션ID를 통한 재인증 과정이 필요 없게되는 것.

 

  • 크기에 제약이 없음
  • 만료시기 -> 지정해둔 시간 초과 혹은 클라이언트의 로그아웃
  • 서버 저장소를 활용하기 때문에 요청이 많을경우 서버의 부하가 심해짐
  • 중간에 해킹을 당해도 세션ID 자체는 데이터를 담고있지 않기때문에 보안적으로 우수
JWT

🔥 JWT는 JSON 객체를 활용한 인증방식이다. 3가지 파트( Header, Payload, Signature )로 나뉘어지는게 특징이다.

각 파트는 ' . ' 을 통해 구분되어지고, 헤더에는 알고리즘과 토큰 타입이 들어가고 페이로드에는 데이터들이 담기게 되며 시그니쳐에는 앞선 2가지 헤더와 페이로드를 어떤방식으로 암호화를 진행하는지에 대한 부분이 들어가있다. 시그니쳐 부분을 통해 데이터가 위변조가 일어났는지에 대한 여부를 파악할 수 있는것

 

  • 3가지 파트로 나뉨 ( 헤더 . 페이로드 . 시그니쳐 )
  • 중요정보를 담을수 없음 ( jwt 값 자체만으로 누구나 복호화를 시도할 수 있기 때문에 민감한 정보는 노출되기 쉬움 )
  • 인증을 위한 별도의 저장소가 필요치 않음

👉 쿠키/세션은 별도의 저장소가 필요로 하지만 JWT는 자체로 인증방식을 지니고 있기에 저장소가 불필요.

  • 확장성이 매우 우수함 ( 어느 곳에 이식해서 사용해도 문제가 없음 )

'회고 > TIL' 카테고리의 다른 글

2023 - 07 - 04 TIL  (0) 2023.07.04
2023-06-20 TIL  (0) 2023.06.20
2023-06-13 TIL  (0) 2023.06.14
2023-05-26 TIL  (0) 2023.05.26
2023-05-23 TIL  (0) 2023.05.23