JWT 최종 수정일 2026-06-18 20:17 조회수 5
대시보드

JWT

기본 정보

  • 명칭: JWT
  • 영문명: JSON Web Token
  • 분류: 인증 토큰 표준
  • 표준: RFC 7519
  • 주요 용도: 사용자 인증 및 권한 관리
  • 관련 주제: #JWT #인증 #API #보안 #RESTAPI

개요

JWT(JSON Web Token)는 사용자의 인증 정보와 필요한 데이터를 JSON 형태로 담아 안전하게 전달하기 위한 토큰 기반 인증 방식이다.

로그인에 성공하면 서버는 JWT를 발급하고, 클라이언트는 이후 API 요청 시 JWT를 함께 전송하여 인증을 수행한다.

REST API, 모바일 앱, SPA, SaaS 서비스 등에서 가장 널리 사용되는 인증 방식 중 하나이다.


JWT 구조

Header

.

Payload

.

Signature

예시

eyJhbGciOiJIUzI1NiIs...

eyJ1c2VySWQiOjE...

abc123xyz...

세 부분이 .으로 연결된 문자열 형태이다.


동작 과정

사용자 로그인

↓

서버 인증

↓

JWT 발급

↓

클라이언트 저장

↓

API 요청

↓

Authorization Header

↓

JWT 검증

↓

데이터 반환

Header

토큰의 암호화 알고리즘과 타입 정보를 저장한다.

예시

{
  "alg": "HS256",
  "typ": "JWT"
}

Payload

사용자 정보(Claims)를 저장한다.

예시

{
  "userId": 1,
  "name": "구름",
  "role": "admin"
}

민감한 정보(비밀번호 등)는 저장하지 않는 것이 원칙이다.


Signature

Header와 Payload를 비밀키로 서명한 값이다.

HMACSHA256(

Header +

Payload +

SecretKey

)

위조 여부를 검증하는 역할을 한다.


JWT 전송 방식

일반적으로 HTTP Header를 사용한다.

Authorization:

Bearer eyJhbGciOi...

Bearer 뒤에 토큰을 포함하여 전송한다.


로그인 예시

요청

POST /api/login

응답

{
  "accessToken": "eyJhbGciOi...",
  "refreshToken": "eyJhbGc..."
}

Access Token

  • API 인증용
  • 유효시간이 짧음
  • 만료 시 재발급 필요

예시

30분

1시간

2시간

Refresh Token

  • Access Token 재발급용
  • 유효기간이 김

예시

7일

30일

90일

Claims

JWT에 저장되는 정보이다.

대표 Claim

Claim설명
sub사용자 식별자
iss발급자
aud대상
exp만료 시간
iat발급 시간
nbf사용 가능 시간
jti토큰 ID

JWT 인증 구조

Client

↓

Login

↓

JWT 발급

↓

API 요청

↓

Authorization Header

↓

JWT 검증

↓

Response

Session과 비교

JWTSession
서버 저장 없음서버 메모리 저장
StatelessStateful
확장성 높음서버 부담 증가
모바일 친화적웹 중심
API에 적합전통 웹에 적합

JWT 장점

  • Stateless 구조
  • 서버 부하 감소
  • 모바일 앱에 적합
  • REST API와 잘 어울림
  • 서버 확장이 쉬움
  • 다양한 플랫폼에서 사용 가능

JWT 단점

  • 발급 후 강제 폐기가 어려움
  • 토큰 탈취 시 위험
  • Payload가 Base64 인코딩일 뿐 암호화는 아님
  • 토큰 크기가 Session ID보다 큼

보안 고려사항

권장 사항

  • HTTPS 사용
  • 짧은 Access Token 만료 시간
  • Refresh Token 별도 관리
  • HttpOnly Cookie 사용 고려
  • 민감 정보 저장 금지
  • 강력한 Secret Key 사용
  • 토큰 재사용 방지
  • Refresh Token Rotation 적용

JWT 저장 위치

LocalStorage

장점

  • 구현이 쉬움

단점

  • XSS 공격에 취약

HttpOnly Cookie

장점

  • JavaScript 접근 불가
  • XSS 방어에 유리

단점

  • CSRF 대응 필요

실무에서는 HttpOnly Cookie 사용을 권장하는 경우가 많다.


JWT 라이브러리

Node.js

  • jsonwebtoken

PHP

  • firebase/php-jwt

Java

  • jjwt
  • java-jwt

Python

  • PyJWT

C#

  • System.IdentityModel.Tokens.Jwt

주요 활용 분야

  • 로그인 인증
  • REST API
  • 모바일 앱
  • SPA
  • SaaS
  • ERP
  • OAuth 인증
  • SSO

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • Access Token과 Refresh Token 분리
  • Access Token은 15~60분 정도의 짧은 만료 시간 설정
  • Refresh Token은 DB에 저장하여 관리
  • HTTPS 환경에서만 전송
  • JWT Payload에는 최소 정보만 저장
  • 로그아웃 시 Refresh Token 폐기
  • 토큰 서명 알고리즘은 HS256 또는 RS256 사용
  • 토큰 갱신 API 별도 제공
  • 토큰 만료 예외 처리 구현
  • API Gateway에서 JWT 검증 수행 가능

JWT와 함께 사용하는 기술


대표 활용 사례

  • React 로그인
  • Vue 관리자 페이지
  • Flutter 앱 로그인
  • ERP 인증
  • SaaS 사용자 인증
  • OpenAI API Gateway
  • 모바일 앱 인증
  • 관리자 시스템 로그인

관련 문서


출처

  • JWT 공식 홈페이지 (jwt.io)
  • RFC 7519 - JSON Web Token
  • OWASP JWT Security Cheat Sheet