The claims are the fixed identity claims plus the deep merge of the claims fragments of every group the caller holds.
Claim
Scope
Value
sub
any
person: their email; ServiceAccount: <cluster>:k8s:<namespace>:<name>, or k8s:<namespace>:<name> with no cluster
email, email_verified
email
the address
preferred_username
profile
the address
name, given_name, family_name
profile
from the directory; absent for a workload
groups
any
internal group names, flat, one string each; all of the authorization
auth_time
any
sign-in time; unchanged across refreshes, iat is fresh
sid
any
session id as the console lists it; absent when no session backs the token
The ID token and the userinfo endpoint carry a claim when its scope was granted. A refresh that names no scope keeps the sign-in's. The access token carries the names and groups for any scope.
Kind
Merge rule
lists
union, de-duplicated, sorted
maps
merged recursively
scalars
two groups setting one key differently is a load-time error
lifetime
shortest across the caller's groups, then client ttl_cap, then lifetimes.default
Conflicts are refused at policy load. A lifetime cannot depend on a pair such as group and client; use a new internal group.