JWT 개발자 참고 자료

JWT Claims Reference

JWT를 디버깅할 때는 누가 발급했는지, 누구를 위한 것인지, 언제 유효한지, 애플리케이션이 어떤 인가 데이터를 이해하는지 맥락으로 읽습니다.

48 / 48

등록 JWT Claims

iss

발급자

stringRFC 7519 §4.1.1

JWT를 발급한 주체를 식별합니다.

검증: 애플리케이션이 미리 신뢰한 issuer와 정확히 비교합니다.

sub

주체

stringRFC 7519 §4.1.2

issuer namespace 안에서 JWT가 나타내는 주체를 식별합니다.

검증: issuer를 검증한 뒤 그 issuer namespace 안에서만 해석합니다.

aud

대상

string | string[]RFC 7519 §4.1.3

JWT의 의도된 수신자를 식별합니다.

검증: resource server가 기대하는 audience가 반드시 포함되게 합니다.

exp

만료 시간

NumericDateRFC 7519 §4.1.4

이 시각 이후에는 JWT를 수락하면 안 됩니다.

검증: 작게 설정한 clock tolerance만 허용하고 exp 이후에는 거부합니다.

nbf

사용 시작 시간

NumericDateRFC 7519 §4.1.5

이 시각 이전에는 JWT를 수락하면 안 됩니다.

검증: 설정된 clock tolerance를 제외하고 nbf 이전에는 거부합니다.

iat

발급 시간

NumericDateRFC 7519 §4.1.6

JWT가 발급된 시각입니다.

검증: token age/lifetime 정책에 사용하고 비정상적인 미래 값은 거부합니다.

jti

JWT ID

stringRFC 7519 §4.1.7

JWT의 고유 식별자입니다.

검증: replay 탐지나 revocation에 필요할 때만 서버 상태와 함께 사용합니다.

OpenID Connect Identity / ID Token Claims

azp

승인된 당사자

stringOIDC Core §2

ID Token이 발급된 승인된 당사자를 식별합니다.

검증: 여러 audience가 있거나 client policy가 요구할 때 확인합니다.

nonce

Nonce

stringOIDC Core §2

ID Token을 브라우저/클라이언트 인증 요청과 연결합니다.

검증: authorization request에 저장한 nonce와 정확히 비교합니다.

auth_time

인증 시간

NumericDateOIDC Core §2

최종 사용자 인증이 수행된 시각입니다.

검증: max_age나 재인증 정책이 인증 나이에 의존할 때 사용합니다.

acr

인증 컨텍스트 클래스

stringOIDC Core §2

달성된 인증 컨텍스트 클래스를 나타냅니다.

검증: 애플리케이션이 명시적으로 이해하는 assurance level만 허용합니다.

amr

인증 방법

string[]OIDC Core §2

비밀번호나 MFA 등 실제 사용된 인증 방법을 나타냅니다.

검증: 알 수 없는 값에서 assurance를 추측하지 말고 issuer 정의를 따릅니다.

at_hash

Access Token 해시

stringOIDC Core §3.1.3.6

Access Token과 ID Token을 연결하는 해시 파생 값입니다.

검증: 현재 OIDC flow/response type이 요구할 때 검증합니다.

c_hash

인가 코드 해시

stringOIDC Core §3.3.2.11

인가 코드와 ID Token을 연결하는 해시 파생 값입니다.

검증: OIDC response type이 요구할 때 검증합니다.

s_hash

State 해시

stringOIDC FAPI / registered claim

일부 OIDC/FAPI 프로필에서 state를 서명된 응답과 연결합니다.

검증: 현재 OIDC/FAPI profile이 요구할 때만 검증합니다.

sid

세션 ID

stringOpenID Connect Session Management

OpenID Provider 세션을 식별합니다.

검증: issuer 범위 session metadata로 취급하고 전역 사용자 ID로 쓰지 않습니다.

name

전체 이름

stringOIDC Core §5.1

최종 사용자의 전체 표시 이름입니다.

검증: 프로필 표시 데이터이며 안정적인 인가 ID로 쓰지 않습니다.

given_name

이름

stringOIDC Core §5.1

최종 사용자의 이름입니다.

검증: 표시용 프로필 데이터로 취급하고 로컬라이징을 고려합니다.

family_name

stringOIDC Core §5.1

최종 사용자의 성입니다.

검증: 고유성을 가정하지 않습니다.

middle_name

중간 이름

stringOIDC Core §5.1

최종 사용자의 중간 이름입니다.

검증: 선택적 프로필 데이터로 취급합니다.

nickname

별명

stringOIDC Core §5.1

최종 사용자의 별명입니다.

검증: 표시 목적으로만 사용합니다.

preferred_username

선호 사용자명

stringOIDC Core §5.1

사용자가 선호하는 짧은 사용자명입니다.

검증: 전역 고유성이나 불변성을 가정하지 않습니다.

profile

프로필 URL

URL stringOIDC Core §5.1

사용자 프로필 페이지 URL입니다.

검증: 링크를 렌더링하기 전에 URL 처리를 검증합니다.

picture

사진 URL

URL stringOIDC Core §5.1

프로필 사진 URL입니다.

검증: 렌더링할 때 신뢰할 수 없는 원격 콘텐츠로 취급합니다.

website

웹사이트 URL

URL stringOIDC Core §5.1

사용자 웹사이트 URL입니다.

검증: 신뢰할 수 없는 프로필 데이터로 취급합니다.

email

이메일

stringOIDC Core §5.1

사용자가 선호하는 이메일 주소입니다.

검증: email_verified=true이고 issuer가 신뢰될 때만 확인된 주소로 취급합니다.

email_verified

이메일 확인

booleanOIDC Core §5.1

issuer가 이메일 주소 제어권을 확인했는지 나타냅니다.

검증: 신뢰할 수 있는 issuer와 확인 방식이 있을 때만 의존합니다.

gender

성별

stringOIDC Core §5.1

issuer가 제공한 성별 값입니다.

검증: 불필요하다면 수집하지 않는 등 데이터 최소화를 우선합니다.

birthdate

생년월일

stringOIDC Core §5.1

사용자의 생년월일입니다.

검증: 민감한 프로필 데이터이며 인증 요소로 사용하지 않습니다.

zoneinfo

시간대

stringOIDC Core §5.1

사용자의 시간대 식별자입니다.

검증: 표시/환경설정 용도로만 사용합니다.

locale

로케일

BCP 47 stringOIDC Core §5.1

사용자의 로케일 선호값입니다.

검증: 표시 용도로 사용하고 trust decision에는 쓰지 않습니다.

phone_number

전화번호

stringOIDC Core §5.1

사용자가 선호하는 전화번호입니다.

검증: phone_number_verified=true이고 issuer가 신뢰될 때만 확인된 번호로 취급합니다.

phone_number_verified

전화번호 확인

booleanOIDC Core §5.1

issuer가 전화번호 제어권을 확인했는지 나타냅니다.

검증: issuer의 확인 정책과 방법에 따라 해석합니다.

address

우편 주소

objectOIDC Core §5.1

구조화된 우편 주소 객체입니다.

검증: 표시 전 중첩 필드를 검증하고 민감 정보로 취급합니다.

updated_at

프로필 업데이트 시간

NumericDateOIDC Core §5.1

사용자 정보가 마지막으로 갱신된 시각입니다.

검증: 프로필 최신성 metadata로만 사용합니다.

OAuth Access Token / Authorization Claims

client_id

클라이언트 ID

stringRFC 9068 §2.2

Access Token과 연관된 OAuth client를 식별합니다.

검증: resource server policy가 특정 client를 요구할 때만 비교합니다.

scope

OAuth Scope

space-delimited stringRFC 9068 §2.2.3 / RFC 8693

Access Token에 부여된 위임 권한을 나타냅니다.

검증: resource가 이해하고 token audience에 적용되는 scope만 인가합니다.

roles

역할

string[]RFC 9068 §2.2.3.1 / RFC 7643

인가 결정에 사용하는 역할 값을 나타냅니다.

검증: issuer/resource별 의미를 정의하고 알 수 없는 role은 기본 거부합니다.

groups

그룹

string[]RFC 9068 §2.2.3.1 / RFC 7643

인가 결정에 사용하는 그룹 멤버십을 나타냅니다.

검증: issuer 간 이름/계층 의미가 같다고 가정하지 않습니다.

entitlements

권리

string[]RFC 9068 §2.2.3.1 / RFC 7643

권리나 허용을 나타내는 entitlement 값을 담습니다.

검증: 각 entitlement를 허용 작업에 명시적으로 매핑합니다.

cnf

확인 정보

objectRFC 7800

Proof-of-Possession 키 확인 정보를 담습니다.

검증: token/profile이 요구하는 confirmation method를 실제로 검증합니다.

act

행위자

objectRFC 8693 §4.1

위임이나 impersonation에서 실제 행위자를 식별합니다.

검증: 인가와 감사에서 actor와 subject를 구분합니다.

may_act

대리 가능 주체

objectRFC 8693 §4.4

subject를 대신해 행동할 수 있는 당사자를 식별합니다.

검증: 명시적 위임 정책이 있는 token exchange에서만 사용합니다.

Private / Vendor Authorization Claims

permissions

권한

string[]Private claim

애플리케이션별 허용 작업 목록으로 자주 사용됩니다.

검증: private claim의 issuer, audience, permission 의미를 명시합니다.

role

역할

string | string[]Private claim

단일/복수 역할을 표현하는 private 관례입니다.

검증: roles와 동일하다고 가정하지 말고 issuer별로 매핑합니다.

tenant

테넌트

stringPrivate claim

tenant나 조직 routing에 쓰이는 private 관례입니다.

검증: tenant 값만으로 issuer trust를 만들지 말고 인증된 context와 대조합니다.

org_id

조직 ID

stringPrivate claim

SaaS 인가 모델에서 조직을 식별하는 일반적인 값입니다.

검증: issuer별 값으로 취급하고 resource membership은 별도로 강제합니다.

token_use

Token 용도

stringVendor/private claim

access/identity 같은 token 용도를 구분하는 vendor 관례입니다.

검증: issuer 공식 문서가 있을 때만 사용하고 가능하면 표준 typ/profile 규칙을 우선합니다.