Refresh Token

Hyunji·2022년 5월 2일
0

공부

목록 보기
22/35
post-thumbnail

Refresh Token 이란?

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주)

Refresh Token Process

  • 클라이언트가 권한 획득 후, Authorization Server에서 Access Token과 Refresh Token을 발급 받는다
  • 클라이언트는 API를 호출할 때마다 발급받은 Access Token을 활용하여 Resource Server에 요청을 하고, Resource Server는 보호되고 있는 자원을 제공한다
  • 어느날 클라이언트가 Access Token을 통해 Resource Server에 접근했는데, Invalid Token Error가 발생하게 된다. 이 에러는 Access Token의 유효기간이 만료되었다는 것이다
  • 클라이언트는 보관하고 있던 Refresh Token을 사용하여 Authorization Server에서 Access Token을 다시 발급받는다. 이때 Refresh Token도 다시 발급해 주는 경우가 있기도 하다.

기존의 Access Token만 있을 때보다 안전하다는 장점이 있지만, 구현이 복잡하고 Access Token이 만료될 때마다 재발급 과정에서의 요청이 너무 잦다는 단점이 있다


https://tansfil.tistory.com/59
https://velog.io/@yulhee741/Refresh-Token-%EC%A0%95%EB%A6%AC

profile
성장중인 개발자

0개의 댓글