24장. Access token과 Refresh token의 수명을 분리한다
access token은 API 접근용으로 짧게, refresh token은 새 access token을 받는 장기 자격 증명으로 더 강하게 보호한다. 브라우저 SPA에서 refresh token을 JavaScript 저장소에 오래 두는 설계를 피하고 BFF 또는 공급자 권장 회전 방식을 검토한다.
refresh token rotation은 이전 token 재사용을 탐지하면 token family를 폐기할 수 있어야 한다. 네트워크 재시도 때문에 정상 클라이언트가 같은 token을 두 번 보내는 race도 설계한다. 로그아웃은 화면 이동이 아니라 세션, token, 공급자 logout의 범위를 명시한다.
logout current device = 현재 세션/refresh family 폐기
logout all devices = 사용자 session version 증가 + 전체 family 폐기
role downgrade = 고권한 token의 사용 가능 시간 최소화
JWT access token은 발급 후 자체 검증되므로 즉시 폐기가 어렵다. 짧은 TTL, gateway denylist의 제한적 사용, signing key 사고 시 emergency rotation을 조합한다. 모든 요청에서 거대한 denylist를 조회해 JWT의 장점을 없애기 전 요구사항을 다시 본다.