JWT (JSON Web Token)
웹에서 인증과 정보 전달을 안전하게 하기 위해 사용하는 토큰 형식.
로그인 시스템이나 API 인증 등에 많이 사용한다.
서버가 사용자 인증에 성공했을 때, 사용자 정보를 JSON 형식으로 암호화한 토큰을 만들어 클라이언트에게 전달하고,
클라이언트는 이후 요청마다 이 토큰을 HTTP 헤더에 담아서 서버에 전달하는 방식이다.
즉, 클라이언트가 로그인 후 받은 토큰을 요청에 포함시키면, 서버는 토큰을 확인하고 인증된 사용자로 인식한다.
요청마다 토큰을 헤더에 담아서 보내는 이유 >> HTTP의 특성때문
** HTTP의 특성
Connectionless : 한 번 통신이 이뤄지고 난 후 연결이 바로 끊어진다.
Stateless : 이전 상태를 유지/기억하지 않는다.
구조
JWT는 총 3개의 부분으로 구성된다.
xxxxx.yyyyy.zzzzz
| 구분 | 설명 |
| Header | 토큰 타입과 알고리즘 (공개키/개인키 or 비밀키) |
| Payload | 사용자 정보 (클레임) |
| Signature | 서명 (변조 방지) |
동작 원리
1. 사용자 로그인
- 클라이언트가 로그인 요청
- 서버가 사용자 확인 후 JWT 발급
2. JWT 저장
- 클라이언트는 JWT를 로컬스토리지나 쿠키에 저장
3. API 요청
- 클라이언트가 API 요청 시 Authorization 헤더에 토큰을 담아 보냄
4. 서버 검증
- 서버는 JWT의 서명(Signature)을 확인하고, 유효하면 요청을 허용함
장점
- 세션이 필요없다.
- 인증이 빠르다. (토큰만 있으면 됨)
- 다양한 플랫폼(웹, 모바일 등) 간 사용이 가능하다.
** 주의할 점
1. Payload는 암호화되지 않기 때문에 민감 정보를 저장하면 안 된다.
2. 토큰 탈취에 주의해야 한다. HTTPS로 전송, XSS 방지 필요하다.
3. 토큰 발급시 만료시간을 설정하여 토큰 만료 처리를 해야한다.
4. 서버에서 토큰 무효화가 어렵다. 일단 발급된 토큰은 만료 전까지 유효하다.
참고
JWT(JSON Web Token)의 이해와 활용: 1편
안녕하세요, 오늘은 현대 웹 개발에서 중요한 역할을 하는 JWT(JSON Web Token)에 대해 자세히 알아보겠습니다. 이 글에서는 JWT의 기본 개념부터 구조, 그리고 실제 사용 방법까지 다룰 예정입니다.1.
kimjh0727.tistory.com
'Spring' 카테고리의 다른 글
| [Thymeleaf] Thymeleaf 기초 (0) | 2025.08.29 |
|---|---|
| [Spring] 의존성 주입 (1) | 2024.11.15 |
| [Springboot] Spring boot 프로젝트 만들기 (0) | 2024.04.17 |
| [Springboot] (오류 해결) app 실행 시 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 오류 (0) | 2024.04.03 |