기존의 세션 기반 인증 방식은 사용자의 인증 정보가 서버의 세션 저장소에 저장되어 메모리의 과부하를 초래할 수 있다는 단점이 있다.
반면에 JWT방식은 사용자의 인증 정보를 토큰 형태로 클라이언트 측에서 저장 하므로 서버의 부하가 세션 방식에 비해 줄어든다는 장점이 있다.
성능적으로는 JWT방식이 더 우수 해 보일 수는 있으나, 클라이언트 측에서 사용자 정보를 저장한다는 것은 보안적인 측면에서 취약할 수도 있다.
아래는 어떤 방식으로 JWT방식의 취약한 보안을 해결 하였는지에 대한 설명이다.

위 그림은 JWT 인증 방식으로 구현한 서비스의 사용자 인증 과정이다.
Refresh Token
토큰 저장 방식
Cookie와 Redux에 저장된다.Cookie의 HttpOnly 옵션을 이용해 보안성을 높혔다. 하지만 Cookie도 CSRF 공격에 취약하다는 단점이 있어, 보안의 허점이 있다.Redux에 저장하였다. Redux는 데이터를 메모리에 저장하는 방식으로, Cookie와는 저장 방식이 달라 두 토큰 모두 탈취당하는 가능성을 줄였다.Redux에 토큰을 저장할 시에 발생하는 문제점
Cookie에 저장되어있는 Refresh Token을 서버에 인증 요청을 보내 Access Token을 다시 발급 하게끔 구현하였다. 새로고침 할 때마다 인증을 받고 다시 토큰을 재발급 받는 로직이 추가되어 부하가 늘어 날 수 있지만, 새로고침 할 일이 많지 않을 거라 판단된다면 이렇게 구현해도 무방 할 것이다.그래도 여전히 존재하는 토큰 탈취의 가능성
Refresh Token Rotation 기법을 적용하여 기존의 Refresh Token을 이용하여 Access Token만을 재발급 받았었던 방식에서 Refresh Token도 함께 재발급 받는 것이다.