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');