1. JWT란?
JWT(JSON Web Token)이란, 웹에서 사용자 인증을 위해 토큰을 기반으로 한 인증 방식이다. JSON 데이터를 기반으로 한 인터넷 표준 인증 방식으로, 인증 정보를 토큰에 담아 클라이언트와 서버 간에 주고받는다. 토큰은 Base64 URL-safe로 인코딩 되어있다. 세션 기반과는 다른 인증 방식으로 무상태(Stateless) 방식에서 동작하고 REST API와 함께 자주 쓰인다.
2. JWT의 구조
- Header
- 토큰 타입
- 서명 알고리즘
- Payload
- 사용자 정보 및 클레임
- 중요한 정보 포함 X
- Signature
- Header + Payload
- 비밀키 or 개인키로 서명한 값
- 토큰 무결성 검증
3. JWT 인증 과정
- 사용자가 로그인 요청 보냄 (ID, password 등 입력)
- 서버가 사용자 인증 후 비밀 키를 사용해 JWT 발급
- 클라이언트가 JWT를 저장하고 Authorization Header에 포함
- Authorization : Bearer <JWT token> 형태로 전송
- 서버는 토큰을 검증해 사용자 정보 확인 후 처리
- 서버는 JWT 검증 후, 유효한 경우에 사용자 정보를 확인하여 요청 처리
- 만료되거나 변조된 경우 401 반환
4. JWT 장점
- 무상태성(Stateless) : 서버에 세션 정보를 저장할 필요가 없어서 확장성이 뛰어남
- 이식성 : 여러 도메인과 서비스에서 쉽게 사용할 수 있음
- 서버에서 토큰을 검증하기만 하면 되기 때문에 인증 처리가 빠름
- 보안성 : 디지털 서명을 통해 위변조 방지
- Cross-Origin 사용 가능
5. JWT 단점
- 토큰 길이가 길어 요청 시 네트워크 비용 증가, 네트워크 부하 발생
- 만료된 토큰을 강제로 무효화 하기 어려움
- Payload 가 Base64로 인코딩 되어있기 때문에 누구나 볼 수 있으므로 노출되어선 안됨. HTTPS, Expiration 설정 필수
6. Access Token, Refresh Token
Access Token과 Refresh Token은 JWT 기반의 인증 시스템에서 사용되는 두가지 유형의 토큰이다. JWT 형태로 발급되고, 각각 다른 역할을 수행한다.
- Access Token
- 탈취 될 경우 보안에 취약할 수 있기 때문에 유효기간이 짧음
- API 호출 시 사용
- Refresh Token
- 새로운 Access Token을 발급받기 위해 사용됨
- 서버에서 저장, 관리

감사합니다 o(*°▽°*)o
'Development > Back-end' 카테고리의 다른 글
| [Express] 알리고 API 를 이용한 문자 서비스 예제 (0) | 2025.05.19 |
|---|---|
| [Express] 게시글 관리 미들웨어 (express-validator) (0) | 2025.05.07 |
| [Express] 유저 인증 미들웨어 (0) | 2025.05.07 |
| [Spring Boot] 간단한 게시글 CRUD (0) | 2025.02.26 |
| [Back-end] 서블릿과 JSP (0) | 2025.02.24 |