🗓️ 2022. 05. 12.
지난 포스트에서 JWT를 통한 인증 방식에 대해 알아봤다. 이러한 인증 방식의 단점은 보안에 취약하다는 점이다.
보안을 위해서 유효기간이 짧은 토큰을 생성할 수 있는데, 이렇게 되면 사용자가 로그인을 자주해서 새롭게 토큰을 발급받아야 한다는 불편함이 있다. 하지만 유효기간을 늘리자니 토큰을 탈취당했을 때 보안에 더욱 취약해진다는 문제가 있다.
Refresh Token은 처음에 로그인을 완료했을 때 Access Token과 동시에 발급된다. 긴 유효기간을 가지면서, Access Token이 만료됐을 때 새로 발급해주는 열쇠가 된다. Refresh Token의 유효기간이 만료되면 사용자는 새로 로그인해야 한다. 보통 유효기간은 2주로 설정한다.
프로미서는 Refresh Token Id를 통해 Access Token이 만료됐을 때 서버에 요청해서 재발급 받을 수 있도록 했다.
Access Token은 쿠키에, Refresh Token Id는 로컬스토리지에 저장했다.
Access Token은 요청시 헤더에 실어서 보내기 때문에 쿠키에 저장했고, Refresh Token과 Access Token을 분리해서 보관하는 게 보안상 나을 것이라는 생각이 들어 Refresh Token은 로컬스토리지에 저장했다.