정리 원본 링크 : 쉽게 알아보는 서버 인증 2편
Access Token
를 통한 인증 방식의 문제는 만일 제 3자에게 탈취당할 경우 보안에 취약하다는 점Refresh Token
Refresh Token
은 Access Token
과 똑같은 형태의 JWTAccess Token
과 동시에 발급되는 Refresh Token
은 긴 유효기간을 가지면서 Access Token
이 만료됐을 때 새로 발급해주는 열쇠가 됨Refresh Token
의 유효기간은 2주, Access Token
의 유효기간은 1시간이라 했을 때Access Token
은 만료됨Refresh Token
의 유효기간 전까지는 Access Token
을 새롭게 발급받을 수 있음Tip!
Access Token
이 탈취 당했을 때 정보가 유출되는건 동일- 다만 짧은 유효기간 안에만 사용이 가능하기에 상대적으로 안전하다는 의미
Tip!
Refresh Token
의 유효기간이 만료됐다면 사용자는 새로 로그인해야 함Refresh Token
도 탈취될 가능성이 있기 때문에 적절한 유효기간 설정이 필요
- 2주로 설정하는 경우가 많음
Access Token
, Refresh Token
을 발급Refresh Token
을 저장Refresh Token
은 안전한 저장소에 저장 후, Access Token
을 헤더에 실어 요청을 보냄Access Token
을 검증하여 이에 맞는 데이터를 보냄Access Token
만료Access Token
을 헤더에 실어 요청을 보냄Access Token
이 만료되었음을 확인하고 권한없음을 신호로 보냄Access Token
만료가 될 때마다 계속 ⑨-⑪ 과정을 거칠 필요는 없음Access Token
의 Payload
를 통해 유효기간을 알 수 있기 때문에 API 요청 전에 토큰이 만료됐다면 바로 재발급 요청을 할 수도 있음Refresh Token
과 Access Token
을 함께 서버로 보냄Access Token
이 조작되지 않았는지 확인한 후, Refresh Token
과 사용자의 DB에 저장되어 있던 Refresh Token
을 비교Token
이 동일하고 유효기간도 지나지 않았다면 새로운 Access Token
을 발급Access Token
을 헤더에 실어 다시 API 요청을 진행Access Token
만 있을 때보다 안전Access Token
이 만료될 때마다 새롭게 발급하는 과정에서 생기는 HTTP 요청 횟수가 많음