Přeskočit na hlavní obsah

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í:

  1. Přihlaste se do uživatelského portálu
  2. Přejděte na "Autorizované aplikace"
  3. Zobrazte seznam aplikací s uděleným přístupem
  4. Klikněte na "Odvolat" pro odebrání přístupu aplikace

Parametr prompt

Ovládejte chování souhlasu pomocí parametru prompt:

HodnotaChování
noneTichá autentizace - selže pokud je vyžadován souhlas
loginVynutí opětovnou autentizaci
consentVynutí 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');