피드로 돌아가기
Dev.toSecurity
원문 읽기
Stateless 확장성과 Session 제어력을 동시에 확보한 Dual-Token 아키텍처 설계
Designing JWT Auth the Right Way
AI 요약
Context
HTTP의 무상태성으로 인한 사용자 인증 유지 필요성과 기존 JWT 단일 토큰 사용 시 발생하는 즉각적인 Revocation 불가능 문제 분석. Stateless한 검증 속도와 중앙 집중식 세션 제어 사이의 Trade-off 해결이 핵심 과제.
Technical Solution
- Access Token의 수명을 15분으로 제한하여 토큰 탈취 시 피해 노출 시간을 최소화한 설계
- Refresh Token을 httpOnly Cookie에 저장하고 서버 DB에 Hash 형태로 관리하여 세션 제어권 확보
- Refresh Token Rotation 기법을 통해 새 토큰 발급 시 기존 토큰을 무효화하는 Sliding Session 구현
- bcrypt의 자동 Salt 생성 및 느린 해싱 속도를 활용한 무차별 대입 공격(Brute-force) 방어 구조
- Refresh Token 재사용 탐지 시 해당 사용자의 모든 세션을 즉시 Revoke하는 보안 메커니즘 적용
- 서버측 DB 조회 없이 서명 검증만으로 인증을 완료하는 Stateless Verification 프로세스 구축
실천 포인트
1. Access Token 수명을 5~15분 사이로 설정했는가
2. Refresh Token을 httpOnly Cookie에 저장하고 DB에 Hash 값으로 보관하는가
3. 토큰 갱신 시 Rotation 전략을 적용하여 기존 토큰을 폐기하는가
4. 폐기된 Refresh Token 재사용 시 모든 세션을 강제 종료하는 로직이 존재하는가
5. JWT Payload에 민감한 정보를 제외하고 최소한의 Claim만 포함했는가