본문 바로가기
Spring/Spring Security

[Spring Security] JWT 개념 정리

by seoyamin 2023. 1. 19.

1. JWT란 ?

JWT (Json Web Token)은 json 객체를 통해 토큰 자체에 다양한 정보를 저장하는 웹 토큰이다.

JWT의 장점
1) 중앙 인증 서버나 데이터 스토어에 대한 의존성이 없으므로, 시스템을 수평적으로 확장할 수 있다.
2) Base 64 URL Safe Encoding을 사용하므로 URL, Cookie, Header 등 다양한 용도로 사용가능

JWT의 단점
1) Payload의 정보량이 많아지면 네트워크 사용량이 증가하므로, 효율적인 데이터 설계가 필요하다.
2) 토큰이 클라이언트에 저장되므로, 서버에서 그 토큰을 직접 조작할 수 없다.

 

[공식 문서] https://jwt.io/introduction

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

 

 

2. JWT의 구성

JWT는 Header, Payload, Signature의 3가지 구성요소로 이루어져 있다. 

 

2-1. Header

Header에는 토큰의 타입(jwt 등)signature를 해싱하기 위한 알고리즘 정보가 담겨있다.

 

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

 

2-2. Payload

Payload에는 실제 시스템에서 사용하기 위해 서버와 클라이언트가 주고받는 정보가 담겨있다.

 

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

 

2-3. Signature

Signature는 서버에서 토큰의 유효성을 검증하기 위한 문자열이다. 

 

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