[Network] JWT에 대하여(+쿠키,세션)

백엔드류·2024년 2월 29일

Network

목록 보기
1/1
post-thumbnail

JWT를 들어가기전 , 쿠키&세션이란



쿠키

서버가 클라이언트를 인증을 확인하는 방식은 대표적으로 쿠키, 세션, 토큰 3가지가 있다.
쿠키는 key = value 형식의 문자열 데이터 묶음이며 브라우저는 이 문자열 데이터 조각들을 저장해 놓았다가 동일한 서버에 재요청할 때 쿠키 데이터를 전송한다. 쿠키는 주로 세션관리, 개인화, 트래킹에 사용된다.

👀 쿠키 인증 방식



단점 : 쿠키 인증방식은 보안에 취약하다! 요청시 쿠키의 값을 그대로 보내기 때문이다.



세션

위와 같은 보안 위험을 해결하기 위해서 세션인증 추가(중요정보는 서버측에서 관리하는 방식) 클라이언트가 서버의 요청을 보낼 때, 서버는 저장해둔 세션id를 활용한다. 흔히 아는 로그인할때 요청이 성공하면 서버는 세션id를 서버에 저장하고 클라이언트는 브라우저의 세션id를 저장한다. 이후 다음 요청이 서버로 들어올 때 마다 쿠키의 세션 id의 유효성 검사를 하는것이다.

❗ 헷갈리지 말기

  • 클라이언트는 세션 id를 쿠키를 통해서 기억
  • 브라우저에 세션id를 저장해둔 클라이언트는 다음요청때마다 헤더의 cookie에 세션id를 담아서 전송
  • 서버는 클라이언트가 보낸 요청의 쿠키에 담긴 세션id와, 세션 스토리지에 담긴 세션id를 대조해 인증을 거침.(세션은 쿠키를 기반으로 한다.)

👀 세션 인증 방식

단점 : 서버에서 세션 저장소를 사용해서 대용량 트래픽일시 서버에 부하가 심해진다.



토큰(JWT)

기존의 세션 인증은 서버가 db에 세션정보를 가지고 있어야 되서 오버헤드등 문제점이 있었는데 토큰은 클라이언트에 저장되기 때문에 서버의 부담을 줄인다. JWT는 인증에 필요한 정보들을 암호화시킨 JSON 토큰이며 JWT 토큰을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방법이다. Header + Payload + Signature로 구성된다.


👀 토큰 인증 방식(JWT)

하지만 이마저도 보안의 위험이 있기 때문에 토큰을 AccessToken, RefreshToken을 나누어 각각 유효기간을 다르게 해 피해를 최소화 한다.


👀 토큰 인증 방식(JWT) - 개선


⭐ 총정리

쿠키 & 세션

  • 장점 : cookie만 사용하는 거보다 보안 향상, 서버쪽에서 session 통제가능, 네트워크 부하 낮음

  • 단점 : 세션 저장소 사용으로 인한 서버 부하

    JWT

  • 장점 : 인증을 위한 별도의 저장소가 필요X , 별도의 I/0 작업없는 빠른 인증처리, 확장성이 좋음

  • 단점 : 토큰의 길이가 늘어나면 늘어날수록 네트워크 부하, 특정 토큰을 강제로 만료시키기 힘듬.



참고 : https://jhbljs92.tistory.com/entry/1-JWT-%ED%86%A0%ED%81%B0-%EC%9D%B8%EC%A6%9D%EA%B3%BC-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-%ED%86%A0%ED%81%B0

profile
공부한 내용을 정리한 블로그입니다 & 백엔드 개발자

0개의 댓글