1. Cookie 인증방식 플로우

2. Cookie방식의 단점
3. Cookie사용예시
도입배경 : 쿠키의 보안이슈를 보완하고자 탄생했다.
특징 :
1. Sesssion 저장형태

2. Session플로우
3. Session단점
4. Session 사용예시
Token인증플로우

Token단점
토큰의 보안 위험과 대응 방법
JWT 구조
.)으로 구분됩니다.JWT구성예시
Signature는 Header, Payload를 인코딩하고 비밀키로 암호화한다.
(header).(payload).(signature)으로 만들면 JWT
HEADER: {
"alg": "HS256",
"typ": "JWT"
}
PAYLOAD: {
"sub": "user123",
"name": "홍길동",
"role": "admin",
"exp": 1712345678
}
SIGNATURE: HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secretKey
)
조합후
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6Iu2PrOyggeycoCIsInJvbGUiOiJhZG1pbiIsImV4cCI6MTcxMjM0NTY3OH0
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JWT 헷갈리는 부분
Payload에 담기는 건 일부 식별 정보일 뿐, 사용자의 전체 데이터베이스 내용이 아님.
Payload는 암호화되지 않아서 누구든 디코딩 가능 → 민감 정보 저장 안함
Signature 덕분에 내용이 위변조되었는지 서버가 검증 가능.
그래서 JWT는 "사용자 정보 그 자체"가 아니라, "사용자 신원을 증명하는 서명된 데이터".
쿠키
세션
토큰(JWT)
| 구분 | 저장 위치 | 서버 상태 유지 여부 | 인증 데이터 형태 | 장점 | 단점 |
|---|---|---|---|---|---|
| 쿠키 | 브라우저 | Stateless | key=value | 구현 간단 | 데이터 위변조·탈취 위험, 브라우저 의존 |
| 세션 | 서버(메모리/DB) | Stateful | 세션ID(쿠키로 전달) | 보안성↑, 데이터 서버 보관 | 사용자 많으면 서버 부하↑ |
| 토큰(JWT) | 브라우저(로컬스토리지/쿠키) | Stateless | 서명된 JSON 문자열 | 확장성↑, 서버 부하↓ | 만료 전까지 탈취 시 위험, 길이↑ |