https://prolog.techcourse.co.kr/studylogs/2272

https://inpa.tistory.com/entry/WEB-📚-Access-Token-Refresh-Token-원리-feat-JWT

자주 사용되는 방법

  1. Access Token을 TypeScript 로컬 변수에, Refresh Token을 cookie에 보관하는 방법
  2. Refresh Token을 직접 보관하는 대신 서버 DB에 있는 Refresh Token의 인덱스(좀 더 안전하게 하려면 해시화를 진행해서)를 cookie에 보관하는 방법. 이 경우도 Access Token은 마찬가지로 로컬 변수에 보관

두 가지 방법 모두 cookie에 httpOnly, secure 옵션을 적용함

정리

Access Token: 로컬 변수 or cookie

Refresh Token: cookie에 저장하되 Refresh Token을 직접 저장하는 방법 or 토큰을 직접 저장하는 대신에 DB의 인덱스 값(혹은 이를 해시화한 값)을 저장하는 방법이 있음

httpOnly

자바스크립트를 통해 쿠키에 접근하는 것을 차단 → XSS 공격 방어

RTR(Refresh Token Rotation)

Refresh Token을 한번만 사용할 수 있도록 함

즉, Access Token을 발급받을 때 Refresh Token 또한 재발급

생각해 보아야 할 문제

만약 Refresh Token이 만료된다면?

  1. 로그아웃 처리 → 사용자가 다시 로그인하면 어차피 Refresh Token 재발급
  2. RTR

CSRF

CSRF는 보안에 신경을 쓰면 방어 가능함