JWT , JSON Web Token
인증에 필요한 정보들을 암호화시킨 JSON 토큰
JWT기반 인증은 JWT Token을 HTTP헤더에 실어 서버가 클라이언트를 식별하는 방식이다.
웹서비스에서, 사용자 인증의 가장 대표적인 방식 두가지는 세션방식과 토근방식이 있다.
JWT는 그 중에서도 토큰방식이다.
이를 사용하는 이유는 HTTP가 stateless한 특성때문인데, 상태를 기억하지 못하기 때문이다.
상태를 기억하지 못한다는 것은 유저가 로그인 했다는 것을 기억하지 못하기 때문에
새 페이지를 요청할 때마다 매번 로그인을 해야한다면 매우 불편할 것이다.
이를 해결하기 위해 나온 대표적인 도구가 바로 세션과토큰이다.
두가지의 가장 큰 차이점은 다음과 같다.
세션은 DB서버에 저장.
토큰은 클라이언트 측에서만 저장
먼저 세션인증의 동작방식.

토큰인증의 동작방식

두가지 방식의 특징 비교


최근 대부분 웹서비스가
토큰방식을 선택하게 되는 이유는확장성에 있다
세션은 서버에 저장되기 때문에 한번에 많은 다중 접속자 발생 시 과부하가 걸릴 수도있다
이를 해결하기 위해 Scale-Up / Scale-Out같은 방식을 사용할 수 있지만,
Scale-Up은 비용의 문제, Scale-Out으로 서버를 여러대두면 세션을 쓰기가 또 복잡해진다.
이러한 세션의 단점으로 sticky session / session clustering과 같은 방식도 등장했지만, 이것도 처리비용이 발생하므로,
애초에 이런걱정을 안해도 되는 토큰을 사용
하지만, 토큰은 세션에 비해 보안측면에서 상대적으로 취약하다. 이를 해결하기 위해 나온것이 Refresh Token
Refresh Token은 기존 토큰과 동일한 형태의 JWT인데, 유효기간이 길다..기존처럼 API요청할 때, 기존의 Access Token을 사용하되,
이 토큰이 만료되었을 때만, refresh token을 사용. 그럼 서버에서 또 새로운 Access Token을 발급해주는 방식