OpenID Connect: co to je, autentizační a autorizační protokol

Autor: IT Sectr Publikováno: 2026-04-05 Doba čtení: 9 min

OpenID Connect — je autentizační protokol postavený nad OAuth 2.0, který ke standardní autorizaci přidává vrstvu ověření identity uživatele. Na rozdíl od čistého OAuth 2.0, kde access token poskytuje přístup ke zdrojům bez informací o uživateli, OpenID Connect vrací ID Token — JWT s potvrzenými údaji profilu. Podle údajů OpenID Foundation, 2026 je protokol podporován všemi hlavními Identity Provider — Google, Apple, Microsoft a Auth0.

Hlavní

  • OpenID Connect — autentizační protokol nad OAuth 2.0, vrací ID Token
  • ID Token — JWT s claims o uživateli: identifikátor, email, jméno, avatar
  • Authorisation Code Flow — hlavní OIDC tok pro mobilní a serverové aplikace
  • Single Sign-On — uživatel se přihlásí jednou přes Identity Provider a získá přístup ke všem připojeným aplikacím
  • Discovery URL — standardní endpoint /.well-known/openid-configuration pro získání konfigurace poskytovatele

Co je OpenID Connect?

OpenID Connect (OIDC) — je otevřený autentizační protokol postavený jako vrstva nad OAuth 2.0. Standardizuje to, co v OAuth 2.0 chybělo: ověření identity uživatele. Pokud OAuth 2.0 odpovídá na otázku „která aplikace má přístup?„, pak OIDC odpovídá na otázku „kdo přesně je tento uživatel?„.

Protokol používá ID Token — JSON Web Token (JWT), který obsahuje sadu claims: jedinečný identifikátor subjektu, email, jméno, avatar, časová razítka vydání a vypršení. Klientská aplikace může ID Token kryptograficky ověřit — server podepisuje token pomocí RS256 nebo ES256 a klient kontroluje podpis veřejným klíčem získaným prostřednictvím JWKS endpointu.

Podle údajů Auth0, 2025 používá více než 78 % mobilních aplikací využívajících autentizaci třetí strany OIDC prostřednictvím Google Sign-In nebo Sign in with Apple. To činí protokol de facto standardem pro social login a firemní autentizaci.

Jak funguje OpenID Connect

OpenID Connect definuje několik toků (flows) v závislosti na typu klienta. Pro mobilní aplikace je standardem Authorisation Code Flow s Proof Key for Code Exchange (PKCE) — poskytuje ochranu i bez client secret na zařízení.

Identity Provider a jeho role

Identity Provider (IdP) — je server, který provádí autentizaci uživatele a vydává tokeny. V ekosystému OIDC poskytuje IdP dva klíčové endpointy: Authorisation Endpoint pro přihlášení uživatele a Token Endpoint pro výměnu kódu za tokeny. Klient zjistí adresy těchto endpointů prostřednictvím Discovery URL — standardní cesty /.well-known/openid-configuration, která vrací JSON dokument s celou konfigurací poskytovatele.

Každý IdP zveřejňuje svůj JWKS (JSON Web Key Set) — sadu veřejných klíčů pro ověření podpisu ID Token. Klient tyto klíče ukládá do mezipaměti a používá je k ověření každého přijatého tokenu bez dotazování na server.

Authorisation Code Flow s PKCE

Authorisation Code Flow — je tříkrokový proces. Nejprve mobilní aplikace vygeneruje code verifier (náhodný řetězec o délce 43–128 znaků) a jeho hash — code challenge. Aplikace otevře prohlížeč nebo WebView s URL obsahujícím client_id, redirect_uri, scope (openid profile email) a code challenge. Uživatel zadá přihlašovací údaje na stránce IdP a potvrdí souhlas. IdP přesměruje prohlížeč zpět do aplikace s authorisation code.

Ve druhém kroku aplikace odešle authorisation code, code verifier a client_id na Token Endpoint serveru. Server zkontroluje code verifier proti uloženému code challenge a vrátí ID Token, Access Token a volitelně Refresh Token. Ve třetím kroku aplikace ověří ID Token: validuje podpis prostřednictvím JWKS, zkontroluje issuer (iss), audience (aud) a čas vypršení (exp). Pokud je ověření úspěšné — uživatel je považován za autentizovaného.

PKCE (Proof Key for Code Exchange) eliminuje zranitelnost vlastní standardnímu Authorisation Code Flow u veřejných klientů. Protože mobilní aplikace nemůže bezpečně uložit client secret, útočník, který zachytil authorisation code, by jej mohl vyměnit za tokeny. Code verifier řeší tento problém: i když je kód zachycen, bez původního code verifier je výměna nemožná. OAuth Security Best Practices (RFC 9700) vyžadují PKCE pro všechny veřejné klienty, včetně mobilních aplikací.

ID Token a Access Token

OpenID Connect vrací dva zásadně odlišné tokeny: ID Token a Access Token. ID Token — je vždy JWT, který klient může nezávisle přečíst a ověřit. Obsahuje informace o uživateli a slouží k autentizaci, nikoli k přístupu k API.

Struktura ID Token

ID Token se skládá z headeru, payloadu a signature, zakódovaných v Base64 a oddělených tečkami. Header obsahuje alg (algoritmus podpisu) a kid (identifikátor klíče). Payload zahrnuje povinné claims: iss (issuer — vydavatel tokenu), sub (subject — jedinečné ID uživatele), aud (audience — identifikátor klienta), exp (expiration), iat (issued at). Volitelně — name, email, picture, locale.

Příklad dekódovaného payloadu ID Token od Google:

json
{
  "iss": "https://accounts.google.com",
  "sub": "1234567890",
  "aud": "my-app-123.apps.googleusercontent.com",
  "exp": 1812345678,
  "iat": 1812342078,
  "name": "Ivan Petrov",
  "email": "ivan@example.com"
}

Access Token — je neprůhledný token (libovolný řetězec) nebo JWT, který klient předává v API požadavcích. Na rozdíl od ID Token, access token není určen ke čtení klientem — jeho formát a obsah jsou známy pouze serveru zdrojů a autorizačnímu serveru. Access Token má scope — omezení přístupových práv — a krátkou životnost, obvykle 15–60 minut.

Rozdíly mezi OpenID Connect a OAuth 2.0

OAuth 2.0 — je autorizační rámec, který definuje, jak aplikace získává přístup ke zdrojům uživatele. OpenID Connect — je vrstva, která do tohoto procesu přidává autentizaci. Klíčový rozdíl: OAuth 2.0 nedefinuje formát tokenu a neposkytuje aplikaci způsob, jak zjistit, kdo přesně požadavek provedl.

ParametrOAuth 2.0OpenID Connect
ÚčelAutorizace přístupu ke zdrojůmAutentizace + autorizace
Token identityNeID Token (JWT)
Scopeapi:read, api:writeopenid, profile, email
UserInfo endpointVolitelnéStandardizovaný
Single LogoutNeSpecifikace OpenID Connect Session Management

Kdy zvolit OpenID Connect

OpenID Connect je nezbytný, když aplikace potřebuje rozeznat uživatele, nejen získat přístup k jeho datům. Pokud používáte „Přihlásit se přes Google„ nebo „Sign in with Apple„ — to je OIDC. Pokud vaše aplikace volá API třetí strany jménem uživatele bez potřeby znát jeho identitu — stačí čistý OAuth 2.0. Pro firemní systémy s Single Sign-On (SSO) je volba jasná: pouze OpenID Connect, protože poskytuje standardizované odhlášení a správu relací.

Implementace OpenID Connect v mobilních aplikacích

Integrace OpenID Connect do mobilní aplikace vyžaduje výběr vhodné knihovny a správné nastavení toku. Pro Android se používá credential manager (AndroidX Credentials) nebo knihovna AppAuth. Pro iOS — framework AuthenticationServices s ASWebAuthenticationSession.

Příklad kódu v Kotlin (Android)

Níže je uveden příklad spuštění Authorisation Code Flow pomocí knihovny AppAuth-Android. Aplikace vytvoří autorizační požadavek, otevře prohlížeč pro přihlášení uživatele a zpracuje callback s tokeny.

kotlin
val authRequest = AuthorizationRequest.Builder(
    serviceConfig,
    clientId,
    "code",
    Uri.parse("com.example.app:/oauth")
)
.setScope("openid profile email")
.build()

val authService = AuthorizationService(this)
val intent = authService.getAuthorizationRequestIntent(authRequest)
startActivityForResult(intent, REQUEST_CODE)

override fun onActivityResult(
    requestCode: Int,
    resultCode: Int,
    data: Intent?
) {
    if (requestCode == REQUEST_CODE) {
        val response = AuthorizationResponse.fromIntent(data)
        if (response?.authorizationCode != null) {
            exchangeCodeForTokens(response.authorizationCode)
        }
    }
}

Příklad kódu v Swift (iOS)

ASWebAuthenticationSession od Apple poskytuje vestavěný prohlížeč pro OIDC tok s podporou SSO přes iCloud Keychain. Relace se spouští s autorizační URL a callback se zpracovává prostřednictvím completion handleru.

Při výběru knihovny pro OpenID Connect zvažte podporu PKCE přímo z krabice: AppAuth-Android a AppAuth-iOS podporují PKCE ve výchozím nastavení. Firebase Authentication používá OIDC pod kapotou pro Google Sign-In, Sign in with Apple a Microsoft — vývojář nemusí tok implementovat ručně. Pro firemní systémy s vlastním IdP (např. Keycloak nebo Okta) zůstává AppAuth standardní volbou s plnou kontrolou nad konfigurací a zpracováním chyb.

swift
let authURL = URL("https://accounts.google.com/o/oauth2/v2/auth")!
let callbackURL = URL("com.example.app://oauth")!

let session = ASWebAuthenticationSession(
    url: authURL,
    callbackURLScheme: callbackURL.scheme!
) { url, error in
    guard let url = url else { return }
    let components = URLComponents(url: url)
    let code = components?.queryItems?.first(where: { $0.name == "code" })?.value
    if let code = code { exchangeCode(code) }
}
session.start()

Často kladené otázky

Čím se OpenID Connect liší od OAuth 2.0?

OpenID Connect — je vrstva nad OAuth 2.0, která přidává autentizaci. OAuth 2.0 je zodpovědný pouze za autorizaci přístupu ke zdrojům. OIDC zavádí ID Token — JWT s údaji uživatele, standardizuje UserInfo endpoint a přidává možnosti Single Sign-On a odhlášení.

Který OIDC tok je vhodný pro mobilní aplikace?

Pro mobilní aplikace se doporučuje Authorisation Code Flow s PKCE. Nevyžaduje client secret, chrání před zachycením authorisation code a je podporován všemi hlavními Identity Provider. Implicit Flow je zastaralý a neměl by být používán v nových projektech.

Jak ověřit ID Token na straně klienta?

ID Token se ověřuje ve třech krocích: validace podpisu pomocí veřejného klíče z JWKS endpointu, kontrola claims (iss, aud, exp) a dekódování payloadu. Většina SDK — AppAuth, MSAL, Google Sign-In — provádí toto ověření automaticky při přijetí tokenu.

Co znamená scope “openid” v požadavku?

Scope openid — je povinný parametr, který odlišuje OIDC požadavek od běžného OAuth 2.0. Bez něj server nevrátí ID Token. Další scopy — profile, email, address — určují, které konkrétní claims o uživateli budou zahrnuty do tokenu.

Lze OpenID Connect používat bez prohlížeče?

Technicky — ano, prostřednictvím toku Resource Owner Password Credentials, ale nedoporučuje se. Prohlížečový tok zajišťuje izolaci přihlašovacích údajů — aplikace nikdy nevidí heslo uživatele. Apple a Google vyžadují pro své služby autentizaci prostřednictvím prohlížeče.

Shrnutí

  • OpenID Connect — autentizační protokol nad OAuth 2.0 s ID Token ve formátu JWT
  • ID Token obsahuje ověřené claims o uživateli a je podepsán serverem
  • Authorisation Code Flow s PKCE — standardní a bezpečný tok pro mobilní aplikace
  • Identity Provider zveřejňuje Discovery URL a JWKS pro automatickou konfiguraci klienta
  • OIDC podporuje Single Sign-On a standardizované odhlášení mezi aplikacemi
  • AppAuth a AuthenticationServices — hlavní knihovny pro Android a iOS
  • OpenID Connect se používá v Google Sign-In, Sign in with Apple a firemních SSO řešeních

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také