티스토리 뷰
JWT(JSON Web Token)는 “JSON 형태로 표현된 웹 토큰” 입니다.
JWT는 인증(Authentication)과 인가(Authorization)를 위해 사용되는 토큰 기반 인증 방식입니다ㅓ.
사용자가 로그인하면 서버가 “이 사용자는 인증된 사용자임”을 증명하는 서명된 토큰을 만들어 주고
이 토큰을 클라이언트가 이후 요청마다 들고 다니면서 인증을 대신합니다.

1️⃣ JWT 구조 이해
JWT는 세 부분으로 나뉩니다.
- Header: 토큰 타입(JWT)과 해시 알고리즘(예: HS256) 정의
- Payload: 토큰에 담길 정보(claims) — 보통 sub, iat, exp, role 등
- Signature: Header와 Payload를 합쳐 비밀키로 서명한 값, 토큰 변조 방지용
HEADER.PAYLOAD.SIGNATURE
2️⃣ 사용자 인증
JWT 발급의 첫 단계는 사용자 인증입니다.
- 클라이언트가 로그인 요청을 보냅니다.
- 서버에서 전달받은 username과 password를 DB에서 조회 후 검증합니다.
- 패스워드는 일반적으로 BCrypt 등으로 암호화 되어 있어, passwordEncoder.matches(rawPassword, encodedPassword)로 비교합니다.
- 인증 실패 시 401을 반환합니다.
POST /login
Content-Type: application/json
{
"username": "user1",
"password": "1234"
}
3️⃣ JWT 토큰 생성
사용자 인증이 성공하면 서버가 JWT를 발급합니다.
JWT 생성 흐름:
- Header: 토큰 타입과 해시 알고리즘 지정
- Payload: 사용자 정보 및 토큰 만료 시간 등 정의
- Signature: Header + Payload를 비밀키로 서명
4️⃣ 클라이언트에 토큰 전달
- 서버는 생성된 JWT를 HTTP 응답으로 반환합니다.
- 또는 Authorization 헤더에 포함시켜 반환 가능
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
HTTP/1.1 200 OK
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
5️⃣ 서버 내부 처리 요약
서버 관점에서 JWT 발급 과정은 다음과 같습니다:
- 로그인 요청 수신
- 사용자 인증 (DB 조회 + 비밀번호 검증)
- JWT 토큰 생성
- Header, Payload 구성
- 비밀키로 서명
- 클라이언트에 JWT 반환
'SpringBoot' 카테고리의 다른 글
| [SpringBoot] UserRole에 따라 Menu 접근 권한 나누기 (0) | 2024.12.17 |
|---|---|
| [SpringBoot] 데이터 엑셀 다운로드 (feat. 어노테이션만들기, (0) | 2024.12.10 |
| [SpringBoot] ResponseEntity로 Http 코드에 따라 응답데이터 반환하기 (1) | 2024.12.06 |
| [SpringBoot] getReader 오류 발생 (해결) (2) | 2024.12.02 |
| [Springboot] 400에러페이지 설정하기 (0) | 2023.07.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- menu만들기
- 오리지널팬케이스하우스
- 시청역숙소
- MySQL
- csv업로드
- 사용자별메뉴
- 500에러관리
- 스프링부트
- 유에이치스위트
- 신사동이자카야
- 디비개발프로세스
- 컬럼타입변경
- MAC
- 데이터베이스
- cachedbodyhttpservletrequest
- 논클러스터 인덱스
- 권한별메뉴만들기
- 시청역놀곳
- 바디캐싱
- httpcode
- 판교테크원타워맛집
- 데이터업로드
- 400에러관리
- csv다운로드
- springboot
- 디너요리추천
- xcrunerror
- 재귀구문
- 유에이치스위트서울스퀘어
- 오리지널팬케이스하우스 판교점
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함