HJS

JWT 개념 이해

1️⃣ JWT (JSON Web Token) 란?

JWT는 클라이언트와 서버 간에 인증 정보를 안전하게 전달하기 위한 토큰 기반의 인증 방식입니다.
주로 로그인 이후 인증 상태를 유지하는 용도로 사용되며, 자체적으로 정보를 담고 있어 별도의 저장소없이 검증이 가능합니다.



2️⃣ 왜 JWT르 쓰는가?

🔹 세션 기반 인증 vs JWT 기반 인증

항목세션 기반 인증JWT 기반 인증
저장 위치서버 메모리/DB 세션 저장클라이언트(주로 브라우저)에 JWT 저장
확장성서버에 저장공간 필요 → 확장 어려움무상태(stateless) → 수평 확장 용이
처리 방식서버가 세션 ID로 사용자 상태 확인서버가 JWT 자체를 검증해 사용자 확인
보안세션 탈취 위험토큰 탈취 시 유출 위험, 짧은 만료 시간으로 대응 가능

✔️ 즉, JWT는 서버가 상태를 저장하지 않기 때문에 확장성과 유지보수 측면에서 유리합니다. 클라우드 기반/ 마이크로서비스 환경에서 특히 강력한 인증 방식으로 주목받고 있습니다.



3️⃣ JWT의 구조

JWT는 세 부분으로 구성되어 있으며, 각 부분은 .으로 구분됩니다.

xxxxx.yyyyy.zzzzz  
(header).(payload).(signature)

🔹 Header (헤더)

{
	"alg": "HS256",
	"typ": "JWT"
}

🔹 Payload (페이로드)

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

🔹 Signature (서명)

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret
)


4️⃣ Base64 인코딩 방식

📌 Base64는 단순한 인코딩이지 암호화가 아님 → 누구든 디코딩 가능
중요한 정보는 절대 payload에 담지 말 것!