Skip to content

Scopes and Claims

Scope dikirim sebagai string dipisah spasi pada /authorize. openid wajib. Client hanya boleh meminta scope yang ada di allow-list client tersebut.

Scope Catalog

ScopeDefault allowedClaim/efekCatatan
openidYasub, claim protokol OIDCWajib untuk semua request.
profileYaname, given_name, family_nameMuncul di ID token, access token, dan /userinfo bila scope diberikan.
emailYaemail, email_verifiedemail_verified boolean.
offline_accessTidakrefresh_token pada token responseHanya terbit bila client diizinkan scope ini.
rolesTidakroles[]Role slug RBAC user.
permissionsTidakpermissions[]Permission slug hasil resolver RBAC.

/userinfo Schema

/userinfo selalu mengembalikan sub. Field lain bergantung pada scope access token.

FieldTypeKondisi
substringSelalu ada.
namestringScope profile dan value tersedia.
given_namestringScope profile dan value tersedia.
family_namestringScope profile dan value tersedia.
emailstringScope email dan value tersedia.
email_verifiedbooleanScope email dan value tersedia.
rolesstring[]Scope roles.
permissionsstring[]Scope permissions.

Minimal:

json
{ "sub": "usr_123" }

Dengan openid profile email roles permissions:

json
{
  "sub": "usr_123",
  "name": "Tio Pranoto",
  "given_name": "Tio",
  "family_name": "Pranoto",
  "email": "tio@example.com",
  "email_verified": true,
  "roles": ["admin"],
  "permissions": ["clients.read", "clients.write"]
}

ID Token Claims

ID token ditujukan untuk client/RP. Validasi minimal: signature ES256 via JWKS, iss, aud = client_id, exp, nbf, iat, dan nonce.

ClaimTypeArti
issstringIssuer. Production: https://api-sso.timeh.my.id.
audstringClient ID penerima ID token.
azpstringAuthorized party, sama dengan client ID.
substringSubject ID user.
token_usestringid.
jtistringToken ID unik.
sidstringSSO session ID untuk logout.
noncestringNilai dari /authorize, bila dikirim.
at_hashstringHash access token untuk hybrid validation.
auth_timeintWaktu autentikasi user.
amrstring[]Authentication methods, contoh pwd, mfa.
acrstringAssurance context bila ada.
iat, nbf, expintWaktu token. TTL ID token 15 menit.

Scope profile, email, roles, dan permissions menambahkan claim sesuai tabel scope.

Access Token Claims

Access token ditujukan untuk resource server/API, bukan untuk UI login. Validasi wajib: signature ES256 via JWKS, iss, aud = sso-resource-api, exp, nbf, iat, token_use = access, jti, sub, sid, dan client_id.

ClaimTypeArti
issstringIssuer.
audstringSelalu sso-resource-api untuk resource server saat ini.
substringSubject ID user.
client_idstringClient yang menerima token.
token_usestringaccess.
scopestringScope granted dipisah spasi.
jtistringToken ID untuk revocation.
sidstringSSO session ID.
auth_time, amr, acrmixedAssurance context.
iat, nbf, expintWaktu token. TTL access token 15 menit.

Consent muncul saat client membutuhkan persetujuan user dan policy client tidak skip_consent. Admin dapat mengatur policy client dari control plane.

prompt=consent memaksa layar consent bila flow interaktif. prompt=none tidak boleh memunculkan UI; bila login/consent/interaksi dibutuhkan, OP mengembalikan error OIDC seperti login_required, consent_required, atau interaction_required.

Released under the MIT License.