JWT를 들어가기 전에

Stormi·2022년 8월 18일
0

개발

목록 보기
17/20

JWT

JSON WEB TOKEN

왜 사용되고 어디에 쓰이는가?

기본적으로 유저가 웹브라우저를 띄우고
get 방식으로 www.naver.com으로 요청을보내면
서버는 해당메서드에 맞는 것을 찾아서 html을 리턴해줌

이때 헤더에다가 쿠키를 만들어서 보내줌, 쿠키 : session ID를 담아서 준다. 웹브라우저는 이것을 받아서 자신의 쿠키 영역에 sessionID를 담아놓음,

이게 최초 요청때 만들어짐!!

두번째 요청부터는 웹브라우저가 sessionId를 달고감. 서버는 그대로 또 돌려줌

근데 다른 유저가 쿠키에 세션아이디를 위조해서 마치 서버에서 예전에 발급받은 유저인척 하고 가면 위험함. 따라서 서버는 세션아이디를 발급해줄때, 목록을 만들어놓고 기억해야함

즉, 세션ID는 최초요청때 만들어지고

언제 사라지나? 3가지상황때 사라짐

  1. 서버쪽에서 session값을 강제로 지울때
  2. 사용자가 브라우저를 종료시킬때 <그럼서버입장에서는 세션ID가 살아있는데 다음에 요청할때 사용자 브라우저가 세션아이디를 안가지고 입장하니까 새로운 입장자인줄알고 새롭게 발급함>
  3. 보통 30분이 지나면 서버에서 사라짐

세션을 로그인시에 많이 사용한다.
세션을 통해서 인증을 할 수 있는데, 민감한 정보에 접근하기 전에 세션을 통해서 알 수 있다.

세션 단점

클라이언트가 서버에 요청을 할때, 클라이언트가 너무 많다면 약 백만명정도라면 동시 접속자 수가 평균적으로 300명인데 서버는 100명만 처리할 수 있다면 접속자들은 기다려야한다. 그러면 서버를 3개를 띄워야할 텐데, (로드밸런싱 : 부하를 분산시킬때) 1번째 서버에 로그인 요청을하고 세션에 서버 세션에 저장을하고 다시 1번째 서버에 요청을 보내면 괜찮은데 1번쨰 서버에 요청을 하고 2번째 서버에 요청한다면 또 세션이라는 값에 저장을 할 것이다. 로그인이 안되어있는 상태니까 문제가 되는 것이다.
만약에 세개의 서버가 세션을 공유하고 있어서 세션을 DB에 저장하게 된다면 이것또한 문제이다. DB는 하드디스크를 뒤져야하기때문에 느려진다.
원래 세션은 메모리에서 움직이는데 하드디스크에서 움직이게 되면 너무 느려진다.

CPU => RAM => HDD

데이터베이스는 I/O가 일어나기때문에, 회전을 하면서 뒤로가면서 찾기때문에 오래걸린다.

그래서 보통 메모리 공유서버에서 사용한다. 메모리는 I/O가 일어나지 않기 때문에, 램만 있는 것, 하드는 없음, 따라서 세션값을 여기에 저장해놓고 이것을 공유하면됨.

RAM은 전기적신호로 접근 -> 이것의 대표적인 것이 redis!! 레디스!!!!

그래서 JWT는 무엇이고 ! 왜사용을 하고 언제 사용하는가??!!!

-> 위의 세션의 문제점을 해결하기 위해 JWT를 사용하는 것이다.

-> 다음 게시글에서 계속

인프런강의 시큐리티 무료강의를 수강했습니다.

0개의 댓글