본문 바로가기
ETC

JWT 토큰이란? 개발자가 꼭 알아야 할 인증 방식 정리

by devdrawer 2026. 1. 7.

웹 개발을 시작하고 로그인 기능을 구현하려고 하면 거의 반드시 등장하는 개념이 바로 JWT(Json Web Token)입니다.

처음 JWT를 접하면 이런 생각부터 들기 쉽습니다.

  • 세션이랑 뭐가 다른 거지?
  • 왜 이렇게 복잡한 방식을 쓰는 걸까?
  • 토큰 하나로 어떻게 로그인 상태를 판단하지?

JWT 토큰이란?

JWT는 Json Web Token의 약자로,
로그인한 사용자의 정보를 서버가 아닌 토큰 자체에 담아 인증하는 방식입니다.

핵심만 한 줄로 정리하면 이렇습니다.

JWT는 서버가 로그인 상태를 기억하지 않아도 되는 인증 방식

즉, 서버는 매 요청마다 이 사용자가 누구인지 기억해둘 필요가 없습니다.


JWT는 왜 사용하는 걸까?

기존 세션 기반 로그인 방식은 서버가 모든 로그인 사용자의 상태를 기억해야 했습니다.

반면 JWT는 이런 구조입니다.

  • 로그인 성공 → 서버가 JWT 발급
  • 클라이언트가 JWT를 저장
  • 이후 요청마다 JWT를 함께 전송
  • 서버는 토큰만 검증하고 바로 응답

이 덕분에 서버는 훨씬 가벼워지고, API 서버나 MSA 구조에서 특히 강점을 가집니다.


JWT 토큰 구조 (중요)

JWT는 하나의 문자열처럼 보이지만,
실제로는 3개의 영역으로 구성되어 있습니다.

Header.Payload.Signature

1️⃣ Header

토큰 타입과 암호화 알고리즘 정보가 들어 있습니다.

2️⃣ Payload

사용자 정보와 토큰 만료 시간 같은 데이터가 들어갑니다.

  • userId
  • 권한 정보
  • exp (만료 시간)

⚠️ 중요
Payload는 암호화가 아닌 인코딩이기 때문에 누구나 내용을 확인할 수 있습니다.
비밀번호, 개인정보는 절대 넣으면 안 됩니다.

3️⃣ Signature

서버의 비밀 키로 생성된 서명 값입니다.
이 서명을 통해 토큰 위조 여부를 판단합니다.


JWT 인증 흐름 한 번에 이해하기

  1. 사용자가 아이디/비밀번호로 로그인 요청
  2. 서버가 검증 후 JWT 발급
  3. 클라이언트가 JWT 저장 (로컬스토리지 또는 쿠키)
  4. API 요청 시 Authorization 헤더에 JWT 포함
  5. 서버는 토큰 검증 후 바로 응답

여기서 중요한 포인트는 세션 조회 과정이 없다는 점입니다.


JWT 말고 다른 인증 방식은?

1️⃣ 세션(Session) 기반 인증

서버가 로그인 정보를 직접 저장하는 방식입니다.

  • 구현이 단순
  • 서버 부담 큼
  • 확장성 낮음

2️⃣ 쿠키 기반 인증

브라우저 쿠키에 인증 정보를 저장하는 방식입니다.

  • 프론트 구현 편리
  • CSRF 공격 주의 필요

3️⃣ OAuth (소셜 로그인)

구글, 카카오 같은 외부 인증 서버를 사용하는 방식입니다.

  • 직접 로그인 구현 부담 감소
  • 인증 흐름은 상대적으로 복잡

JWT vs 세션 vs OAuth 비교

구분 JWT 세션 OAuth
상태 관리 Stateless Stateful Stateless
서버 부담 낮음 높음 낮음
확장성 좋음 낮음 좋음

JWT 사용할 때 주의할 점

  • 토큰 탈취 시 위험
  • 로그아웃 처리 까다로움
  • 토큰 폐기가 쉽지 않음

그래서 실무에서는 보통

  • 짧은 Access Token 만료 시간
  • Refresh Token 분리
  • HTTPS 필수 적용

같은 방식으로 보완합니다.


마무리 정리

JWT는 만능은 아니지만, API 서버 + 프론트엔드 분리 구조에서는 사실상 표준처럼 사용되는 인증 방식입니다.

처음에는 어렵게 느껴져도, 구조를 한 번 이해하고 나면 왜 이렇게 많이 쓰이는지 자연스럽게 보이기 시작합니다.