Přeskočit na hlavní obsah

Scopes a Claims

Standardní OIDC Scopes

ScopePopisVrácené claims
openidPovinný. Označuje OIDC autentizační požadavek.sub (GUID uživatele)
profileZákladní profilové informace uživatelename, given_name, family_name
emailE-mailová adresa uživateleemail, email_verified
phoneTelefonní číslo uživatelephone_number, phone_number_verified
addressPoštovní adresa uživateleobjekt address
offline_accessPožadavek na refresh token(povolí refresh tokeny)

API Scope

ScopePopisPoužití
apiPřístup k servisnímu APISpráva uživatelů, relací, 2FA
Pouze pro M2M (Machine-to-Machine)

Scope api je určen výhradně pro Client Credentials flow (komunikace mezi službami). Uživatelské tokeny získané přes Authorization Code Flow nemohou přistupovat k API endpointům.

API endpointy vyžadují:

  1. Token získaný přes Client Credentials flow
  2. Scope api

Přehled Claims

Claims v ID tokenu

ID token vždy obsahuje:

ClaimPopisPříklad
issVydavatel tokenuhttps://your-sso-domain.com/
subIdentifikátor uživatele (GUID)550e8400-e29b-41d4-a716-446655440000
audZamýšlené publikum (client_id)my-app
expČas expirace (Unix timestamp)1704067200
iatČas vydání (Unix timestamp)1704065400
nonceHodnota pro ochranu proti opakováníabc123

Profile Claims (scope: profile)

ClaimPopisPříklad
nameCelé jménoJan Novák
given_nameKřestní jménoJan
family_namePříjmeníNovák

Email Claims (scope: email)

ClaimPopisPříklad
emailE-mailová adresajan@example.com
email_verifiedZda je e-mail ověřentrue

Phone Claims (scope: phone)

ClaimPopisPříklad
phone_numberTelefonní číslo+420123456789
phone_number_verifiedZda je telefon ověřentrue

Address Claims (scope: address)

ClaimPopisPříklad
address.street_addressUlice a čísloHlavní 123
address.localityMěstoPraha
address.postal_codePSČ11000

Další claims

ClaimPopisPříklad
roleRole uživateleUser, Admin

Příklad: Dekódovaný ID token

{
"iss": "https://your-sso-domain.com/",
"sub": "550e8400-e29b-41d4-a716-446655440000",
"aud": "my-app",
"exp": 1704067200,
"iat": 1704065400,
"nonce": "abc123",
"name": "Jan Novák",
"given_name": "Jan",
"family_name": "Novák",
"email": "jan@example.com",
"email_verified": true,
"role": "User"
}

Příklad: UserInfo odpověď

Požadavek:

curl https://your-sso-domain.com/connect/userinfo \
-H "Authorization: Bearer ACCESS_TOKEN"

Odpověď:

{
"sub": "550e8400-e29b-41d4-a716-446655440000",
"name": "Jan Novák",
"given_name": "Jan",
"family_name": "Novák",
"email": "jan@example.com",
"email_verified": true,
"phone_number": "+420123456789",
"phone_number_verified": true,
"address": {
"street_address": "Hlavní 123",
"locality": "Praha",
"postal_code": "11000"
},
"role": "User"
}

Požadování scopes

Zahrňte požadované scopes v autorizačním požadavku:

scope=openid profile email offline_access
Osvědčený postup

Požadujte pouze scopes, které vaše aplikace skutečně potřebuje. Uživatelé s větší pravděpodobností udělí souhlas, když je požadováno méně oprávnění.