JWT
JWT는 json web token이 라고 한다.
그럼 이 JWT가 왜 사용되고 어디에 사용되는지 먼저 알아보자
JWT를 이해하기위해선 session의 단점이 뭔지부터 알아야 한다.
Session
기본적으로 사용자가 웹에서 서버로 최초 요청을 한다고 하면 서버가 응답을 할 때 해더에 쿠키를 담아서 세션 id를 넘겨주고 사용자의 웹에 자동으로 쿠키를 저장하는 것이 기본전략이다. 그래서 다음에 같은 사용자가 다시 요청을 한다고하면 쿠키에 있는 세션id를 보고 사용자의 요청을 효율적으로 응답할 수 있게 되는 것이다.
그럼 이 session은 언제 사라지냐?
1. 서버 쪽에서 session값을 날렸을 때
2. 사용자가 브라우저를 전부 종료했을 때
3. 특정 시간이 지나면 자동 삭제
이때 서버가 알아야 하는 사항은 이 쿠키를 만들 때마다 목록을 서버가 들고 있어야지 사용자가 최초 요청인지 아닌지를 분별할 수 있다.
session의 단점
동시접속자 수 가 100만 명 정도 된다라고 가정하고
이런 트래픽이 높은 사이트는 서버가 여러 대가 있는데 이때 라우팅을 하는 것을 로드벨런싱이라고 한다.
그럼 서버가 여러대가 있을 때 각 모든 서버에 클라이언트 세션정보가 똑같지 않고 각자의 최초 요청이 다르기 때문에
로드 벨런싱 과정에서 한 서버에 너무 몰려서 다른 서버로 요청이 간다면 그 서버 입장에서는 최초 요청이 된다는 말이다.
위 문제를 해결하기 위해서 여러 개의 서버의 session정보를 하나의 db에 저장을 하는 방법도 있는데 이 방법은 io가 일어나기 때문에 RAM에 접근하는 것에 비해서 너무너무 느려진다.
그래서 io를 피하기 위해서 사용하는 것이 메모리(RAM) 공유서버를 사용한다. 그럼 모든 서버가 메모리 공유서버에 session을 저장하는 것이다. 이 대표적인 메모리 공유서버는 redis서버가 있다.
그럼 이 session의 단점을 알게 되면
왜 JWT를 사용하는지 알 수 있을 것이다.
JWT는 session의 고질적인 문제를 해결하기 위해서 만들어졌기 때문이다.
'SpringbootSecurity' 카테고리의 다른 글
SpringbootSecurity/JWT/JWT기본개념(CIA와 RSA에 대해 이해하기) (0) | 2021.09.02 |
---|---|
SpringbootSecurity/JWT/JWT기본개념(TCP에 대해 이해하기) (0) | 2021.09.02 |
SpringbootSecurity/Springboot로 네이버 로그인 해보기 (yml에서 provider 설정하기) (0) | 2021.09.01 |
SpringbootSecurity/Springboot로 페이스북 로그인 해보기 (0) | 2021.08.31 |
SpringbootSecurity/Springboot로 구글로그인 해보기(3)/구글 로그인 및 자동 회원가입 진행 완료 (0) | 2021.08.29 |