NestJS · JWT Auth

JWT 인증 시스템의 발급·검증·폐기 흐름

JWT 기반 인증은 토큰을 발급하는 코드가 아니라, 신원 확인 후 claim을 서명하고 매 요청에서 검증하며 만료와 재발급을 통제하는 체계다.

01

신원 확인

AuthService가 비밀번호 해시 또는 외부 provider 결과로 사용자를 확인한다.

02

토큰 발급

sub, role, tenant 같은 최소 claim과 exp를 넣어 access token을 서명한다.

03

요청 검증

JWT strategy와 guard가 header를 읽고 signature, exp, user 존재를 확인한다.

04

수명 관리

refresh token rotation, logout, 강제 만료 기준을 별도로 설계한다.

Access token
짧은 수명 API 접근에 쓰이며 탈취 피해를 줄이기 위해 짧게 유지
민감 claim 최소화
Refresh token
재발급 수단 긴 수명과 저장·폐기 정책이 필요
해시 저장과 rotation 권장
Strategy
검증 로직 payload에서 사용자 컨텍스트를 구성
탈퇴·비활성 사용자 재확인
Guard
route 보호 인증된 요청만 handler로 통과
권한 guard와 분리 가능

비밀 · claim · 만료 점검

비밀 JWT secret은 설정 검증과 rotation 계획이 있다.
claim 토큰에 민감 정보나 자주 바뀌는 권한을 과하게 담지 않는다.
만료 access와 refresh 수명이 다르고 재발급 실패가 처리된다.
권한 인증 성공과 리소스 접근 권한을 구분한다.