Node.js 숙련주차 강의를 들으면서 Refresh Token의 개념을 알게 되었다.
내 개인 블로그를 개발하였던 사이드 프로젝트에서는 하루짜리 Access Token만 사용하였고
클라이언트에 Cookie 로 보내준 후, 유저 정보를 localstorage 와 redux에 이중으로 저장해놓았다.
지금 강의를 들으며 생각해보니 나의 서비스는 아~주 보안에 취약하다는 걸 깨달았다.
로그인한 상태를 가지고 화면을 핸들링 하려다 보니, 내 정보를 뜯어볼 수 있을 것 같다.
Access Token 만 사용 할 경우, 탈취되면 만료되기 전 까지 누구나 권한 접근이 가능해 진다.
JWT는 발급 한 후, 삭제가 불가능하므로 유효시간을 주는 것으로 대응 해야한다.
유효시간을 짧게하여 보안성을 높일 수 있지만, 사용자는 자주 로그인을 해서 새로운 Token을 발급 받아야 하므로 불편하다는 단점이 있다.
그래서 나온 것이 Refresh Token이다.
Access Token, Refresh Token 모두 만료
Error, 재 로그인 진행
Access Token 만료
Refresh Token 검증하고, 클라이언트 측 Refresh Token과 DB에 저장된 Refresh Token과 비교한 후,
Access Token 재발급
Refresh Token 만료
만약, Access Token이 유효하다면? 이미 인증된 것이므로 바로 Refresh Token 재발급
Access Token, Refresh Token 모두 유효
정상 진행
나중에 시간적 여유가 생긴다면 내 개인 블로그도 Refresh Token을 적용해보아야겠다.