JWT (JSON Web Token)

less than 1 minute read

JWT

JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object.

JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA.

사용

Authorization: Bearer <token>

Authorization

  • 로그인 시에 사용 (Single Sign on)
  • 오버헤드가 적고 다른 도메인에서도 유연하게 동작하기 때문에 사용

Information Exchange

  • 정보를 안전하게 전달할 수 있는 방법
  • RSA 등의 공개키로 암호화 시 sender를 식별할 수 있다.

JWT structure

<header>.<payload>.<signature>

  • Header : 토큰 타입(JWT)과 사용된 사인 알고리즘 명시, base64로 인코딩
  • Payload : 토큰에 들어갈 정보(클레임)가 들어간다.
  • Signature : Hash(헤더의 인코딩값 + ‘.’ + 페이로드의 인코딩값)
  • 데이터 유출 : header, payload는 누구나 디코딩이 가능

클레임 (claim)

  • 하나의 클레임은 key-value pair
  • registered claim : set of predefined claims
  • public claim : 마음대로 정의 가능하지만, 충돌 방지를 위해 URL 형식을 사용한다.
  • private claim : 정보의 공유를 위해 사용 (실제 사용 데이터)
  • 보통 라이브러리를 사용 시 private claim만 작성하면 된다.

출처
jwt 홈페이지

Categories:

Updated: