Souhlas uživatele
Typy souhlasu
Implicitní souhlas
Pro důvěryhodné first-party aplikace:
- Uživateli není zobrazena obrazovka souhlasu
- Autorizace je udělena automaticky
- Vhodné pro interní aplikace
Explicitní souhlas
Pro aplikace třetích stran (výchozí):
- Uživatel vidí obrazovku souhlasu zobrazující:
- Název a logo aplikace
- Požadovaná oprávnění (scopes)
- Tlačítka Povolit / Zamítnout
- Uživatel musí explicitně schválit přístup
- Souhlas je zapamatován pro budoucí požadavky
Obrazovka souhlasu
Když je vyžadován explicitní souhlas, uživatelé vidí:
┌─────────────────────────────────────────────┐
│ │
│ "Moje Appka" chce přístup k vašemu účtu │
│ │
│ Tato aplikace bude moci: │
│ │
│ ✓ Zobrazit vaše profilové informace │
│ (jméno, profilový obrázek) │
│ │
│ ✓ Zobrazit vaši e-mailovou adresu │
│ │
│ ✓ Zůstat přihlášen (offline access) │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Zamítnout│ │ Povolit │ │
│ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────┘
Správa udělených oprávnění
Uživatelé mohou zobrazit a odvolat přístup aplikací:
- Přihlaste se do uživatelského portálu
- Přejděte na "Autorizované aplikace"
- Zobrazte seznam aplikací s uděleným přístupem
- Klikněte na "Odvolat" pro odebrání přístupu aplikace
Parametr prompt
Ovládejte chování souhlasu pomocí parametru prompt:
| Hodnota | Chování |
|---|---|
none | Tichá autentizace - selže pokud je vyžadován souhlas |
login | Vynutí opětovnou autentizaci |
consent | Vynutí obrazovku souhlasu i když byl dříve udělen |
| (vynecháno) | Zobrazí souhlas pouze pokud nebyl dříve udělen |
Příklad - Vynucení souhlasu:
https://your-sso-domain.com/connect/authorize?
client_id=my-app&
redirect_uri=https://myapp.com/callback&
response_type=code&
scope=openid%20profile&
prompt=consent
Chyba tiché autentizace (vyžadován souhlas):
https://myapp.com/callback?error=consent_required&error_description=User%20consent%20is%20required
Zpracování souhlasu ve vaší aplikaci
Standardní flow
Většina aplikací by neměla používat parametr prompt, což umožní systému zobrazit souhlas pouze když je potřeba.
Tichá autentizace
Pro obnovu tokenů na pozadí v SPA použijte prompt=none:
// Pokus o tichou autentizaci
const authUrl = new URL('https://your-sso-domain.com/connect/authorize');
authUrl.searchParams.set('prompt', 'none');
// ... další parametry
// Pokud je vrácena chyba consent_required, zobrazit přihlašovací UI
if (error === 'consent_required' || error === 'login_required') {
showLoginButton();
}
Vynucení opětovného souhlasu
Když vaše aplikace přidává nové scopes, můžete chtít vynutit opětovný souhlas:
const authUrl = new URL('https://your-sso-domain.com/connect/authorize');
authUrl.searchParams.set('prompt', 'consent');
authUrl.searchParams.set('scope', 'openid profile email new_scope');