web/network

JWT란? & JWT 사용이유

su0a 2024. 3. 13. 15:11

1. 서론

새로운 프로젝트를 준비하면서 간편 로그인 기능을 넣기로 계획했다.

간편 로그인 기능 구현 시 jwt를 사용할 예정이라 공부하고 정리해보고자 한다.

 

2. JWT (Json Web Token)란?

  • 유저를 인증하고 식별하기 위한 토큰 기반 인증이다.
  • 토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함된다.
  • 웹표준을 따르며, JSON 객체를 사용하여 정보를 전달한다.

3. JWT 사용하는 이유

HTTP는 기본적을 stateless(서버가 클라이언트의 상태를 보존하지 않는 것)를 지향한다.

여기서 JWT를 사용하면 클라이언트와 서버 간에 사용자 데이터를 주고 받을 수 있게된다.

 

4. JWT 구성

aaaaaaa.bbbbbbb.ccccccc (Header.Payload.Signature)

  1) Header

    JWT에서 사용할 타입과 해시 알고리즘의 종류가 담겨있다.

  2) Payload

    토큰에서 사용할 정보들이 담겨있다.

    각각의 정보들은 key, value로 구성되는데 이를 claim이라 한다.

  3) signature

    헤더에서 정의한 해시 알고리즘을 활용한다.

    헤더 + 페이로드 + secret 을 합친 것을 헤더에서 정의한 알고리즘으로 암호화한다.

    (secret: 유저가 지정하는 비밀 코드)

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