Refresh Token은 JWT 로그인 방식에 사용되는 JWT의 보안상의 단점을 보완하기 위해 구현한다
Access Token: 사용자가 로그인하여 리소스에 접근할 수 있는 token
제 3자에게 탈취당할 경우 보안에 취약하다는 단점이 있다
Refresh Token 은 Access Token과 똑같은 형태의 JWT이다
단, 처음에 로그인을 완료했을 때 Access Token과 동시에 발급되는 Refresh Token은 긴 유효시간을 가지면서, Access Token이 만료됐을 때 새로 발급해주는 열쇠가 된다
ex: Refresh Token의 유효기간이 2주, Access Token의 유효기간이 1시간일 때, 사용자는 API요청을 하는 중에 1시간이 지나게 되면 사용자가 기존에 가지고 있던 Access token이 만료가 되게 된다. 그러면 Refresh Token의 유효기간 전까지는 Access Token을 새롭게 발급받을 수 있다
Access Token은 탈취당하면 정보가 유출되는건 동일하다. 하지만 짧은 유효기간 안에만 사용이 가능하기 때문에 더 안전하다는 의미이다
Refresh Token의 유효기간이 만료됐다면, 사용자는 새로 로그인을 해야한다. Refresh Token도 탈취될 가능성이 있기 때문에 적절한 유효기간이 설정이 필요하다 (보통 2주)
기존의 Access Token만 있을 때보다 안전하다는 장점이 있지만, 구현이 복잡하고 Access Token이 만료될 때마다 재발급 과정에서의 요청이 너무 잦다는 단점이 있다
https://tansfil.tistory.com/59
https://velog.io/@yulhee741/Refresh-Token-%EC%A0%95%EB%A6%AC