[TIL] 내일배움캠프 12.19

Asher Park·2022년 12월 24일
1

내일배움캠프_TIL

목록 보기
19/39
post-thumbnail

Node.js 숙련주차 강의를 들으면서 Refresh Token의 개념을 알게 되었다.

내 개인 블로그를 개발하였던 사이드 프로젝트에서는 하루짜리 Access Token만 사용하였고
클라이언트에 Cookie 로 보내준 후, 유저 정보를 localstorage 와 redux에 이중으로 저장해놓았다.

지금 강의를 들으며 생각해보니 나의 서비스는 아~주 보안에 취약하다는 걸 깨달았다.

로그인한 상태를 가지고 화면을 핸들링 하려다 보니, 내 정보를 뜯어볼 수 있을 것 같다.

Refresh Token이 왜 필요한가?

Access Token 만 사용 할 경우, 탈취되면 만료되기 전 까지 누구나 권한 접근이 가능해 진다.

JWT는 발급 한 후, 삭제가 불가능하므로 유효시간을 주는 것으로 대응 해야한다.

유효시간을 짧게하여 보안성을 높일 수 있지만, 사용자는 자주 로그인을 해서 새로운 Token을 발급 받아야 하므로 불편하다는 단점이 있다.
그래서 나온 것이 Refresh Token이다.

Access Token + Refresh Token 작동 원리 예시

  1. 사용자가 로그인 시, Access Token 과 Refresh Token을 모두 발급한다.
  2. Refresh Token은 DB에 저장, Access Token과 Refresh Token 모두 쿠키 or 스토리지에 저장
  3. 사용자가 서버에 요청할 시, Access Token과 Refresh Token을 함께 서버로 보낸다.
  4. 각각 검증을 진행한다.
  • 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 모두 유효
    정상 진행

참고자료
https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-Access-Token-Refresh-Token-%EC%9B%90%EB%A6%AC-feat-JWT


나중에 시간적 여유가 생긴다면 내 개인 블로그도 Refresh Token을 적용해보아야겠다.

profile
배움에는 끝이없다

0개의 댓글