🔑 JWT(Json Web Token), 토큰 기반 인증의 기본
최근 웹/모바일 서비스에서 로그인과 인증을 다룰 때 자주 등장하는 개념이 있습니다.
바로 JWT(Json Web Token) 입니다.
세션 기반 인증과 달리 JWT는 토큰 자체에 정보를 담아 인증을 수행하는 방식으로,
API 보안과 마이크로서비스 환경에서 널리 사용되고 있습니다.
1️⃣ JWT란?
JSON 포맷으로 사용자 정보를 안전하게 담아 전달하는 토큰 기반 인증 방식
JWT는 클라이언트가 서버로부터 토큰을 발급받아,
이후 요청마다 HTTP 헤더에 실어 인증을 수행합니다.
2️⃣ JWT 구조
JWT는 Header.Payload.Signature 세 부분으로 이루어져 있습니다.
xxxxx.yyyyy.zzzzz
- Header : 토큰 타입, 해시 알고리즘 (예: HS256)
- Payload : 사용자 정보(Claim)
- Signature : 위변조 방지 서명
3️⃣ 동작 흐름
- 사용자가 로그인
- 서버가 JWT 발급 (비밀키로 서명)
- 클라이언트는 JWT를 저장 (보통 LocalStorage/쿠키)
- 이후 API 요청 시
Authorization: Bearer <token> 헤더에 담아 전송
- 서버는 토큰 검증 후 접근 허용
4️⃣ 장점
- 세션 저장소 불필요 (서버 부담 줄음)
- 다양한 도메인/서비스 간 인증에 유리
- 확장성과 성능이 좋음
5️⃣ 단점 및 주의점
- 토큰 탈취 시 보안 문제 (만료 전까지 유효)
- 토큰 크기가 커서 네트워크 부하 발생 가능
- 민감 정보는 절대 Payload에 직접 넣지 말아야 함
🧠 정리
- JWT는 세션이 아닌 토큰 자체로 인증을 수행
Header.Payload.Signature 구조로 되어 있음
- 장점도 크지만, 보안적으로 반드시 주의가 필요