Json Web Token은 JSON 객체를 안전하게 전송하기 위한 토큰 형식입니다.
JWT는 세 부분으로 구성됩니다. 각각은 '.'으로 구분됩니다.
xxxxx.yyyyy.zzzzz
| 구성 요소 | 설명 |
|---|---|
| Header | 토큰의 타입 (JWT) 및 해싱 알고리즘 (HS256 등) |
| Payload | 실제 전달할 정보 (클레임이라고 부름) |
| Signature | 위 두 개를 암호화한 서명 (위조 방지용) |
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "goguma",
"iat": 1516239022
}
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
| 장점 | 설명 |
|---|---|
| ✅ 무상태(stateless) | 서버에서 세션을 저장하지 않아도 됨 |
| ✅ 확장성 | 인증 서버 분산에 유리 |
| ✅ Self-contained | 필요한 정보를 모두 토큰에 포함 |
JWT는 변조 방지는 가능하지만 암호화되지 않음 → 민감한 정보 금지
토큰 탈취 시, 만료 시간까지는 재사용 가능 → 반드시 HTTPS 사용
서버에서 토큰 폐기 불가 → 보통 Redis 등을 함께 사용해 블랙리스트 관리
1.사용자가 로그인
2.서버가 JWT를 생성해 클라이언트에 전달
3.클라이언트는 JWT를 로컬에 저장 (예: localStorage)
4.이후 요청 시 Authorization: Bearer 헤더로 전달
5.서버는 토큰 검증 후 인증 처리