피드로 돌아가기
Dev.toSecurity
원문 읽기
I/O 50ms를 CPU 5ms로 단축한 Stateless 인증 구조 설계
Why JWT Exists - What I Figured Out by Looking at Real Numbers
AI 요약
Context
Session 기반 인증 방식의 매 요청마다 발생하는 Database 조회로 인한 I/O 병목 현상 분석. 트래픽 증가 시 인증 서버의 Single Point of Failure 위험과 Database 부하 가중 문제 직면.
Technical Solution
- DB Lookup 제거를 위해 Payload와 Signature 구조의 Stateless한 JWT 도입
- Server Secret Key를 이용한 HMAC_SHA256 서명 검증으로 데이터 무결성 보장
- Bcrypt의 의도적인 고비용 CPU 연산(100ms)을 피하기 위한 가벼운 Signature 검증 로직 채택
- Payload의 Base64 인코딩 특성에 따른 기밀성 부재를 인지하고 민감 정보 제외 설계
- Token 탈취 및 강제 로그아웃 대응을 위한 Short-lived Access Token과 Refresh Token 조합 운용
- 즉각적인 권한 회수를 위해 Redis 기반의 Token Blacklist 구조 검토
실천 포인트
1. JWT Payload에 비밀번호 등 민감 정보 포함 여부 확인
2. Access Token의 만료 시간을 짧게 설정하고 Refresh Token 전략 수립
3. 즉각적인 토큰 무효화가 필요한 서비스인지 판단하여 Redis Blacklist 도입 검토
4. 인증 로직의 CPU/IO 비용을 측정하여 병목 지점 파악