JWT 클레임

정기홍·2025년 2월 25일

JWT 클레임 종류

JWT(JSON Web Token)에서 클레임은 크게 세 가지 종류로 나눌 수 있습니다: 등록된 클레임(Registered Claims), 공개 클레임(Public Claims), 비공개 클레임(Private Claims). 각 클레임의 특징은 다음과 같습니다.

1. 등록된 클레임 (Registered Claims)

등록된 클레임은 JWT의 표준화된 클레임으로, 특정한 의미를 가지며, 일반적으로 사용됩니다. 주요 클레임은 다음과 같습니다:

  • iss (Issuer): 토큰의 발급자., 누가 토큰을 발급했는지 나타냄. 임의로 정의한 문자열 또는 URI(uniform resource identifier)의 형식을 지닌다.
  • sub (Subject): 토큰이 대상으로 하는 주체. 일반적으로 주제에 대한 설명을 나타냄. 토큰 주제는 발급자가 정의하는 문맥상 또는 전역으로 유일한 값을 가져야 한다. 문자열 또는 URL 형식을 가진다.
  • aud (Audience): 이 토큰을 사용할 수 있는 대상., 주로 보호된 리소스의 URL을 값으로 설정한다.
  • exp (Expiration Time): 토큰의 만료 시간., 일반적으로 UNIX epoch 시간을 사용한다.
    • UNIX epoch 시간: 세계 협정시(UTC)부터의 경과 시간을 초로 환산해 정수로 나타낸 시간을 의미함.
  • nbf (Not Before): 이 클레임이 설정된 시간 이전에는 유효하지 않음을 나타냄. 토큰이 유효해지는 시간 이전에 미리 발급되는 경우에 사용됨.
  • iat (Issued At): 토큰이 발급된 시간.
  • jti (JWT ID): 토큰의 고유 식별자. 같은 값을 가질 확률이 없는 암호학적 방법으로 생성돼어야 함. 공격자가 JWT를 재사용하는 것을 방지하기 위함.

이 클레임들은 JWT의 유효성을 검증하고, 정보의 해석을 용이하게 합니다.

2. 공개 클레임 (Public Claims)

공개 클레임은 JWT의 사용자 정의 클레임으로, 다른 시스템에서 이해할 수 있도록 정의된 클레임입니다. 표준 클레임에 덧붙여 공개해도 무방한 페이로드를 칭합니다. URI를 사용하여 충돌을 방지할 수 있으며, 예를 들어 http://example.com/role과 같은 클레임을 사용할 수 있습니다. 이름 충돌을 방지하기 위해 IANA JWT 클레임 저장소에 클레임을 등록하거나 합리적인 예방 조치를 취해야 합니다.

3. 비공개 클레임 (Private Claims)

비공식적인 클레임으로, 특정 애플리케이션이나 서비스 간에만 사용되는 클레임입니다. 비공개 클레임은 충돌을 피하기 위해 고유한 이름을 선택해야 하지만, URI를 사용할 필요는 없습니다. 예를 들어 user_id, user_preferences와 같은 서비스 도메인 내에서 필요한 이름과 값에 해당하는 클레임이 이에 해당합니다. JWT 발급자와 사용자 간에 사용하기로 약속한 클레임이라고 생각하면 편합니다.

요약

  • 등록된 클레임: 표준화된 클레임, JWT의 유효성 검증에 사용.
  • 공개 클레임: 사용자 정의 클레임, 다른 시스템 간의 데이터 공유에 사용.
  • 비공개 클레임: 특정 애플리케이션에서만 이해되는 클레임, 외부 시스템에서는 이해할 수 없음.

이렇게 각 클레임의 용도와 특징을 이해하면 JWT를 더 효과적으로 사용할 수 있습니다.

profile
하나를 알고 그걸로 모든걸 관통한다.

0개의 댓글