Scopes a Claims
Standardní OIDC Scopes
| Scope | Popis | Vrácené claims |
|---|---|---|
openid | Povinný. Označuje OIDC autentizační požadavek. | sub (GUID uživatele) |
profile | Základní profilové informace uživatele | name, given_name, family_name |
email | E-mailová adresa uživatele | email, email_verified |
phone | Telefonní číslo uživatele | phone_number, phone_number_verified |
address | Poštovní adresa uživatele | objekt address |
offline_access | Požadavek na refresh token | (povolí refresh tokeny) |
API Scope
| Scope | Popis | Použití |
|---|---|---|
api | Přístup k servisnímu API | Sprá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í:
- Token získaný přes Client Credentials flow
- Scope
api
Přehled Claims
Claims v ID tokenu
ID token vždy obsahuje:
| Claim | Popis | Příklad |
|---|---|---|
iss | Vydavatel tokenu | https://your-sso-domain.com/ |
sub | Identifikátor uživatele (GUID) | 550e8400-e29b-41d4-a716-446655440000 |
aud | Zamýšlené publikum (client_id) | my-app |
exp | Čas expirace (Unix timestamp) | 1704067200 |
iat | Čas vydání (Unix timestamp) | 1704065400 |
nonce | Hodnota pro ochranu proti opakování | abc123 |
Profile Claims (scope: profile)
| Claim | Popis | Příklad |
|---|---|---|
name | Celé jméno | Jan Novák |
given_name | Křestní jméno | Jan |
family_name | Příjmení | Novák |
Email Claims (scope: email)
| Claim | Popis | Příklad |
|---|---|---|
email | E-mailová adresa | jan@example.com |
email_verified | Zda je e-mail ověřen | true |
Phone Claims (scope: phone)
| Claim | Popis | Příklad |
|---|---|---|
phone_number | Telefonní číslo | +420123456789 |
phone_number_verified | Zda je telefon ověřen | true |
Address Claims (scope: address)
| Claim | Popis | Příklad |
|---|---|---|
address.street_address | Ulice a číslo | Hlavní 123 |
address.locality | Město | Praha |
address.postal_code | PSČ | 11000 |
Další claims
| Claim | Popis | Příklad |
|---|---|---|
role | Role uživatele | User, 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í.