Refresh Token 쉽게 설명하기

몽슈뜨·2023년 4월 26일
0

TIL

목록 보기
59/69
post-thumbnail

Refresh Token

Access Token만을 이용해 인증 방식의 문제는 제 3자에게 탈취당할 경우 보안에 취약해진다.
이를 방지하고자 Access Token의 유효기간을 짧게 주는 방법이 있지만
유저는 짧게 설정된 시간 만큼 로그인을 자주 하게되는 좋지 않은 사용자 경험을 받게 됩니다.
이처럼 토큰 유효기간을 짧게하면 토큰 남용을 방지하는 것이 해결책이 될 수 있지만,
유효기간이 짧은 Token의 경유 그만큼 사용자는 로그인을 자주 하여
새롭게 Token을 발급받아야 하므로 불편하다는 단점이 있습니다.
그렇다고 무턱대고 유효기간을 늘리면, 토큰을 탈취당했을때 보안에 더 취약해지게 되는데
그래서 나온것이 Refresh Token 이다.

  • 인증순서
    • 처음 로그인을 하면 서버는 클라이언트에게 Access Token과 Refresh Token을 발급
    • 서버는 데이터베이스에 Refresh Token을 저장하고, 클라이언트는 Access Token과 Refresh Token을 쿠키,세션 혹은 웹스토리지에 저장하고 요청이 있을때마다 이 둘을 헤더에 담아 전송
    • Refresh Token은 긴 유효기간을 가지면서 Access Token이 만료됐을 때 새로 재발급해주는
      열쇠가 된다.
    • 만료된 Access Token을 서버에 보내면 서버는 같이 보내진 Refresh Token을 DB에 있는것과 비교해서 일치하면 다시 Access Token을 재발급
    • 사용자가 로그아웃을 하면 저장소에서 Refresh Token을 삭제하여 사용이 불가능하도록 하고
      새로 로그인하면 서버에서 다시 재발급해서 DB에 저장
  • Refresh Token 인증 과정
profile
개발자되면 맥북사줄께

0개의 댓글