JWT란?

JWT

  • JSON1 Web Token.
  • 자가 수용적2이다.
  • 일반적으로 Access Token과 Refresh Token3으로 구분하여 사용한다.

구성 요소

  1. 헤더Header: 토큰의 유형(JWT)과 사용된 알고리즘(Ex. RSA, HMAC SHA256)을 설명한다.
  2. 페이로드Payload: 전달할 데이터를 담고 있는 JSON 객체. 사용자 정보, 권한 등을 포함할 수 있다.
  3. 서명Signature: 헤더와 페이로드를 합쳐 암호화한 것. 메시지의 무결성을 보장한다.

동작 원리

  • 사용자가 로그인하면, 서버는 사용자의 정보를 기반으로 JWT를 생성하고, 사용자에게 전송한다.
  • 사용자는 모든 요청에 JWT를 포함시켜 서버에 전송하고, 서버는 요청을 받을 때마다 JWT의 서명을 확인한다.

1JavaScript Object Notation. 키와 값의 쌍(클레임)으로 객체를 표현하는 방식.
2Self-contained. 그 자체로 필요한 모든 정보를 담고 있다. 토큰을 검증하기 위해 별도의 데이터베이스 탐색 등의 추가 과정이 필요 없다는 의미.
3유효 기간이 짧은 Access Token을 통해 자원에 접근하고, 유효 기간이 긴 Refresh Token을 통해 Access Token을 재발급한다. Refresh 토큰이 유효하지 않으면 로그인 등을 통해 사용자를 검증한다.