← 질문 목록
#7깊이 0
JWT를 세션 대신 쓸 때 무엇을 잃는가?
즉시 무효화 능력을 잃는다. 서버가 상태를 갖지 않는다는 장점이 그대로 단점이 된다.
세션은 서버가 저장소를 들고 있으므로 지우면 그 순간 끝난다. JWT는 서명만 유효하면 통과한다. 막을 방법이 아예 없지는 않다. 취소 목록을 두거나 서명 키를 갈면 된다.
| 기준 | 세션 | JWT |
|---|---|---|
| 상태 보관 | 서버가 들고 있다 | 토큰 안에 들어 있다 |
| 즉시 무효화 | 지우면 끝 | 목록·키 교체를 따로 둬야 한다 |
| 서버 확장 | 저장소 공유가 필요하다 | 서버끼리 공유할 것이 없다 |
통상적인 대응은 수명을 짧게 가져가고 리프레시 토큰을 붙이는 것이다. 다만 리프레시 토큰은 결국 서버가 상태를 들고 관리해야 하므로, 무상태라는 원래 이점이 상당 부분 사라진다.
판단 기준은 규모다. 서버가 여러 대이고 세션 공유 비용이 실제 부담일 때 JWT가 값을 한다. 단일 서비스에서 관성으로 고르면 잃는 쪽이 크다.