Just Web Token

Claims used in JSON web tokens are standardized in various normative documents. The dictionary below lists some of these registered claims; see IANA for a complete list.

Basic claims

Claims from the original JWT RFC document.

exp

Earliest timestamp after which the token must be rejected as expired. Use of this claim is recommended in order to minimize impact of signing key being compromised.

Format: Unix timestamp – an integer number of seconds since 1970-01-01 00:00:00 in the UTC timezone
iat

Timestamp at which token was issued. Useful to determine the token age and for debugging purposes.

Format: Unix timestamp – an integer number of seconds since 1970-01-01 00:00:00 in the UTC timezone
nbf

“Not before” timestamp restricting the minimum clock time required to accept the token (i.e., opposite of the exp claim).

Format: Unix timestamp – an integer number of seconds since 1970-01-01 00:00:00 in the UTC timezone
iss

Principal that has issued this token. Apps may use the claim to decide whether the issuer is trustworthy.

Format: Application-specific; generally, a string (potentially, a URI)
sub

Describes entity that the claims apply to, generally by using its ID which is globally unique or unique to the issuing system. In the context of OAuth 2.0, the subject is the end user.

Format: Application-specific; generally, a string identifier (e.g., a UUID)
aud

Identifies intended recipient(s) of the token. The token verifier must identify with a value in this claim; otherwise, token verification must fail.

Format: Array of strings (potentially, URIs), or a single string in case of a single allowed recipient
jti

Unique token identifier chosen using a collision-resistant algorithm (e.g., pseudo-randomly with sufficient entropy). Primarily useful to prevent replay attacks; with this claim, produced tokens are guaranteed to be unqiue.

Format: Application-specific; generally, represents random bytes (e.g., in form of a UUID)

OpenID Connect claims

Claims related to the idenitity of the token subject defined by the OpenID Connect framework.

name

Full name of the end user this token is issued to, potentially inlcuding titles and affixes if appropriate.

Format: Human-readable string, such as Dr. John William Doe, with the name components separated by a space char
given_name

Given name(s) of the user this token is issued to.

Format: String with given names separated by a space char, such as John William
family_name

Last name(s) of the user this token is issued to.

Format: String with last names separated by a space char, such as Ortega y Gasset
middle_name

Middle name(s) of the user this token is issued to.

Format: String with middle names separated by a space char, such as Ivanovich
nickname

Casual name of the user this token is issued to. Semantically similar to the given_name claim.

Format: String such as Mike
preferred_username

Name identifying the user for the OAuth 2.0 client. This is usually a unique human-readable identifier of the user, but the verifier must not rely on this claim being unique.

Format: String such as j.doe or john.doe@example.com
profile

Link to the user’s profile page hosted by the issuer

Format: URL string such as https://example.com/u/john.doe
picture

Link to the user’s profile picture or photo hosted by the issuer

Format: URL string such as https://cdn.example.com/pics/127545457835.png. The URL must link to an image resource (e.g., a JPEG or PNG), rather than to an HTML page containing the image.
website

Link to the user’s website, such as a blog

Format: URL string such as https://john-doe.example.com/
email

User’s preferred email address

Format: Email string, for example john.doe@example.com
email_verified

Information on whether the issuer has verified the user’s email address provided in the email claim.

Format: Boolean value such as true
birthdate

User’s date of birth

Format: ISO 8601 date, such as 1990-04-01. Specifying just a year (1990) is admissible as well.
zoneinfo

User’s preferred time zone

Format: String time zone identifier from the IANA time zone database, such as Europe/Paris
locale

User’s preferred locale

Format: String with a BCP 47 language tag, such as en-US or fr_CA. Both dash - and underscore _ separators between the language and country codes are allowed.
phone_number

User’s preferred phone number

Format: String with the phone number. The OpenID Connect spec recommends using the E.164 number format, such as +1 (425) 555-1212.
phone_number_verified

Information on whether the issuer has verified the user’s phone number provided in the phone_number claim.

Format: Boolean value such as true
address

User’s preferred postal address

Format: Object with a subset of the following fields:
  • formatted – Full mailing address
  • street_address – Part of the address related to the street, e.g. house number, street name, PO box
  • locality – City / locality
  • region – State, province, region etc.
  • postal_code – Zip code / postal code
  • country – Country name
formatted and street_address fields can contain newlines, which can be represented as \r\n or \n chars.
updated_at

Timestamp when the user’s info was last updated

Format: Unix timestamp – an integer number of seconds since 1970-01-01 00:00:00 in the UTC timezone

Authentication claims

Claims describing authentication undertaken by the subject in order to create an ID token within the OpenID Connect framework.

auth_time

Timestamp when the user authenticated with the issuer

Format: Unix timestamp – an integer number of seconds since 1970-01-01 00:00:00 in the UTC timezone
nonce

Unique value included into the token to prevent replay attacks. Similar to the jti claim, but can be specified by the authentication request when used within the OAuth 2.0 framework.

Format: Application-specific; generally, represents random bytes (e.g., in form of a UUID)
acr

Reference to the method used to authenticate the user, or the class of this method. Classes may be represented by the applicable authentication level of assurance defined in the ISO/IEC 29115 standard. For example, level 2 (substantial) corresponds to multi-factor authentication, while level 0 is the least reliable (e.g., via a long-term authentication cookie).

Format: String with a URI or a name from the level of assurance profiles registry maintained by IANA. Authentication assurance levels from ISO/IEC 29115 can be represented as number strings, such as 2.
amr

References for the method(s) used to authenticate the user. As an example, this claim may signal that a password and an OTP scheme were used.

Format: Array of strings, each of strings being an application-specific method identifier
azp

Party to which the token was issued. Fulfils almost the same role as the aud claim and is only really necessary if the audience claim has a single value, which is different from the authorized party.

Format: String (potentially a URI) with the OAuth 2.0 client ID of the party

Delegation claims

Claims related to authorization delegation as specified in the OAuth 2.0 token exchange framework.

act

Party to whom the subject has delegated authority to act on behalf of them. This claim can be used in scenarios such as tech support performing actions on behalf of a user.

Format: Object with fields being claims about the actor. Almost always includes the sub claim, and may include other claims in order to uniquely identify the actor (e.g., the issuer – iss).
may_act

Information about a party that is authorized to act on behalf of the subject. This can be used during OAuth 2.0 token exchange to determine whether the potential delegatee is valid, and to produce a token with the act claim as a result.

Format: Object with fields being claims about the actor. Almost always includes the sub claim, and may include other claims in order to uniquely identify the actor (e.g., the issuer – iss).

OAuth 2.0 claims

Claims applicable to tokens issued within miltiple OAuth 2.0 flows.

scope

Collection of OAuth 2.0 scopes that allow restricting valid uses of the token. As an example, scopes can be used to restrict token to specific app(s) or service(s) within the verifier system.

Format: String consisting of one or more space-separated scopes, such as email user_profile
client_id

ID of the OAuth 2.0 client that has requested the token

Format: String with an application-specific format