TIL

TIL - JWT 정리

kinim329 2026. 3. 16. 22:12

JWT란?

  • JWT(JSON Web Token)는 사용자의 인증 정보와 필요한 데이터를 JSON 형태의 클레임(Claim)으로 담고 있는 자가 포함 토큰(Self-contained Token)으로, 서버가 별도의 세션 정보를 저장하지 않아도 인증에 활용할 수 있다.
  • JWT는 헤더, 페이로드, 서명 세 부분으로 구성된다.
  • 헤더에는 토큰의 타입과 서명 알고리즘 정보가 포함된다.
  • 페이로드에는 사용자 정보와 같은 데이터가 클레임(Claim) 형태로 저장된다.
  • 서명(Signature)은 서버의 비밀 키를 이용해 생성되며, 이를 통해 토큰의 위조 여부와 데이터의 무결성을 검증할 수 있다.

왜 JWT를 사용하는가?

  • Stateless인증방식 : JWT는 토큰 자체에 사용자 정보가 포함되어 있기 때문에 서버가 별도의 세션 정보를 저장하지 않아도 된다. 따라서 서버가 인증 상태를 관리할 필요가 없어 확장성과 유연성이 높다.
  • 분산 시스템 환경에 적합 : JWT는 토큰만 검증하면 인증을 처리할 수 있기 때문에 여러 서버가 존재하는 분산 환경이나 MSA 환경에서도 동일한 방식으로 인증을 처리할 수 있다.
  • 서버 부하 감소 : 세션 기반 인증 방식은 서버가 세션 저장소를 관리해야 하지만, JWT는 클라이언트가 토큰을 저장하고 요청 시 전달하기 때문에 서버의 세션 관리 부담을 줄일 수 있다.
  • 다양한 클라이언트 환경에서 사용 가능 : JWT는 HTTP 헤더에 포함되어 전달되기 때문에 웹, 모바일, API 서버 등 다양한 환경에서 동일한 방식으로 인증을 처리할 수 있다.

JWT 구조

  • Header : 토큰의 타입과 서명에 사용되는 알고리즘 정보를 담고 있다.
  • Payload : 사용자 정보와 같은 데이터가 Claim 형태로 저장된다.
  • Signature : 헤더와 페이로드를 기반으로 생성된 서명 값으로, 토큰이 위조되지 않았는지 검증한다.

Claim이란?

Clain은 JWT Payload에 담기는 데이터 단위이다. 사용자 식별 정보나 권한 정보와 같은 데이터를 key-value형태로 저장한다.

서버는 토큰을 검증한 후 Claim에 포함된 정보를 통해 사용자 인증과 권한 확인을 수행한다.

JWT 인증 과정

  1. 사용자가 로그인 요청을 보낸다.
  2. 서버는 사용자의 정보를 검증한다.
  3. 서버가 JWT 토큰을 생성한다.
  4. 생성된 JWT를 클라이언트에게 전달한다.
  5. 클라이언트는 요청 시 JWT를 함께 전송한다.
  6. 서버는 JWT를 검증한다.
  7. 서버가 요청을 처리하고 응답을 반환한다.

JWT의 장점

  • 서버가 세션을 저장하지 않는 Stateless 인증 방식을 사용할 수 있다.
  • 분산 시스템이나 MSA 환경에서 인증 처리에 유리하다.
  • 서버의 세션 저장소 관리 부담을 줄일 수 있다.

JWT의 단점

  • 토큰이 탈취될 경우 만료 전까지 사용될 수 있다.
  • 서버가 토큰 상태를 관리하지 않기 때문에 강제 로그아웃 처리가 어렵다.
  • Payload는 Base64로 인코딩되어있어 내용을 누구나 확인할 수 있다.

정리

JWT는 사용자 인증 정보를 JSON 형태의 클레임으로 담은 자가 포함 토큰으로, 서버가 별도의 세션을 저장하지 않아도 인증을 처리할 수 있는 Stateless 기반 인증 방식이다.
이러한 특징 때문에 JWT는 분산 시스템이나 MSA 환경에서 인증을 처리하기에 적합한 방식으로 많이 사용된다.