JWT(JSON Web Token)는 사용자 인증 정보를 담아 서버와 클라이언트 간에 전달하는 토큰 기반 인증 방식이다.
주로 로그인 이후 사용자의 인증 상태를 유지하기 위해 사용된다.
JWT의 기본 구조
JWT는 점(.)으로 구분된 세 부분으로 구성된다.
Header.Payload.Signature
1️⃣ Header
- 토큰의 타입(JWT)
- 사용된 서명 알고리즘 정보
2️⃣ Payload
- 실제로 전달하고 싶은 정보
- 사용자 식별 정보 (예: userId, email)
- 토큰 만료 시간(exp) 등
=> JWT에 “포함되는 정보”는 Payload에 들어간다.
3️⃣ Signature
- Header + Payload를 비밀 키로 서명한 값
- 토큰 위변조 여부 검증에 사용
JWT는 어디에 저장되고 어떻게 전달될까?
JWT는 토큰의 형식이고, 어디에 저장해서 어떻게 보내느냐는 별도의 문제다. JWT 전달 방식은 대표적으로 2가지가 있다.
1️⃣ Authorization Header 방식
가장 흔한 방식이다.
Authorization: Bearer {JWT}
- 프론트엔드에서 JWT를 저장
- localStorage
- sessionStorage
- 메모리
- API 요청 시 HTTP 헤더에 직접 포함
특징
- 구현이 단순함
- SPA(React, Vue 등)에서 자주 사용
- XSS 공격에 취약할 수 있음
2️⃣ Cookie 방식
JWT를 쿠키에 담아서 전송하는 방식이다.
Cookie: accessToken=JWT값
이때 보통 다음 옵션을 사용한다.
- HttpOnly
- Secure
- SameSite
특징
- 브라우저가 자동으로 요청에 포함
- HttpOnly 설정 시 JS에서 접근 불가 → XSS 방어
- CSRF 공격 고려 필요
'💻 STUDY > CS' 카테고리의 다른 글
| SQL vs NoSQL (0) | 2026.06.12 |
|---|---|
| HTTP vs HTTPS (0) | 2026.04.29 |
| 코테 필수 암기 알고리즘 (0) | 2026.01.15 |