Skip to content
TDACorpIDENTITYSign in

Claims reference

Every claim in identity's ID tokens, access tokens and userinfo response, its type, where it appears and which scope releases it.

On this page

This page lists every claim identity puts in a token or in the userinfo response. In the Where column, ID is the ID token, AT the access token and UI the userinfo response.

A claim is left out when it has no value. It is never sent as null, so a missing claim tells you only that it does not apply or was not released. Treat every claim you do not recognise as opaque and ignore it.

Core claims#

ClaimTypeWhereMeaning
issstringID, ATThe issuer. Compare it exactly.
substringID, AT, UIThe person's stable identifier. For a client with the public subject type (the default) it is the same for every client. A third-party client registered with the pairwise subject type sees a different value, one per sector, in its ID token, in userinfo, in its back-channel logout token and in security event tokens; its access tokens still carry the real identifier. Key accounts on it. For a service it is the service's identifier.
audstringID, ATThe audience. On an ID token, your client id. On an access token, exactly one value: see Access token.
exp, iatnumberID, ATExpiry and issue time, seconds since the epoch. At most 900 seconds apart.
nbfnumberATNot valid before. Equal to iat.
jtistringATA unique token identifier.
vernumberID, ATThe claim-set version. Currently 2. A future incompatible change raises it.

Client and request claims#

ClaimTypeWhereMeaning
client_idstringATThe client the token was issued to.
azpstringATThe client that asked, when the token's audience is a resource or comes from an exchange.
scopestringATThe granted scopes, space separated.
noncestringIDThe value pushed with the request.
authorization_detailsarrayATRFC 9396 details from the request, when one was made.

Authentication claims#

ClaimTypeWhereMeaning
auth_timenumberID, ATWhen the person last authenticated.
acrstringID, ATThe assurance level, aal1, aal2 or aal3.
amrarray of stringsID, ATThe methods used. Both are defined in acr and amr values.
sidstringID, ATThe identity session. Matches the sid of a back-channel logout token.

On a client_credentials access token, acr, amr, auth_time and sid are absent, because no person authenticated.

Organization claims#

ClaimTypeWhereMeaning
tidstringID, ATThe organization the sign-in is for. Present when the authorization is for an organization.
tslugstringID, ATThe organization's slug. Present with tid.

The tid and tslug claims are present whenever the sign-in belongs to an organization; they are not gated on a scope. A request can preselect an organization with tdaid_tenant. See Scopes and consent.

Authorization version claims#

ClaimTypeWhereMeaning
avnumberATThe person's authorization version. It increases when something about their access changes.
pvnumberATThe product's policy version, when one applies.
pvtnumberATThe organization's policy version, when there is one.
rvnumberATThe organization's resource version. Present only with tid.

These are counters for the decision API and its caches. Do not interpret the values; compare them for equality.

Binding and actor claims#

ClaimTypeWhereMeaning
cnfobjectATThe key the token is bound to: jkt, the DPoP key thumbprint, or x5t#S256, a certificate thumbprint. Absent on a token from a first-party web client that did not prove a key.
actobjectATOn an exchanged token, the actor, with sub, client_id and any earlier actor nested inside.
kindstringATThe kind of principal: human, service, workload or agent.

Profile claims#

Released to the ID token and userinfo by the scope shown.

ClaimTypeScopeMeaning
namestringprofileThe display name.
preferred_usernamestringprofileThe username. A hint to display, not an identifier: it can change and be reused.
picturestringprofileAn address on the issuer for the profile picture. It changes when the picture does.
localestringprofileThe language.
zoneinfostringprofileThe time zone.
updated_atnumberprofileWhen the profile last changed, seconds since the epoch.
emailstringemailThe verified primary email. Left out when there is none.
email_verifiedbooleanemailWhether email is verified.

The openid scope alone releases sub and nothing about the person. See the scopes reference.

What is not here#

  • No roles or permission claims. Ask the decision API.
  • No at_hash or azp on ID tokens.
  • Pairwise subjects only by registration. A client sees a per-sector sub only if it was registered with the pairwise subject type, which is fixed at registration. Discovery lists public and pairwise under subject_types_supported. A pairwise client is also sent no picture, because that address is built from the real identifier.
  • Userinfo returns only sub and the profile claims above. The discovery document lists tid, tslug, acr, amr, auth_time and sid under claims_supported, but those are claims of the tokens.

Verified against commit ca46b57