WebInfo

JWT(Json Web Token)

Dexlee 2022. 4. 19. 21:54

1. jwt는?

  • 토큰 기반 json 형식 데이터 정보를 관리하는 방법을 의미.

 

2. jwt의 구조

1) header.payload.signature

  • (.)을 기준으로 3가지 파트로 나누어져 있음.

2) header

  • 토큰에 대한 정보(알고리즘, 타입)
{
  "alg": "HS256",
  "typ": "JWT"
}

3) payload

  • 토큰 내부 정보(발급자, 만료 시간, 제목, 대상 등)
  • 직접 커스터마이징 할 수 있음.
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

4) signature

  • header와 payload 값을 합쳐서 hash로 만든 값
  • 똑같은 인풋이 들어왔을 때, hash값(header+payload)이 같은지 signature를 통해 확인
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

 

3. jwt의 특징

  • 유저 데이터를 유저가 직접 관리
  • 데이터 조작이 되면 안 되므로 read-only
  • 수정 불가능.
  • 수정하려면 서버를 통해야함
  • 접근권한을 디비에 저장하는 것이 아니라 json을 인코딩하여 클라이언트에 토큰으로 저장.

4. jwt의 장점

 

  • 유저 인증과정에서 db 히트하지 않아도 되므로 서버 부하를 줄일 수 있음
  • 서버 의존도를 낮춤
  • 즉, 은행 같은 심각한 정보를 다루는 서비스가 아니라면 jwt를 사용하는 게 서버 부하를 줄이는 방법.

5. jwt의 문제점

  • 토큰이 탈취당했을 시, 개인정보 유출이 될 수 있다.

6. jwt의 문제점에 대한 해결책

  • 토큰 만료기간을 짧게 설정
  • 토큰 만료기간 전에 만료시키려면 전체 초기화 진행

 

references

https://jwt.io/introduction

https://www.youtube.com/watch?v=MUUqogMpGiA