OAuth 2.0 řeší autorizaci — kdo smí přistupovat k jakým zdrojům. OIDC (OpenID Connect) přidává autentizaci — kdo je uživatel. Výsledkem je ID Token s informacemi o uživateli ve formátu JWT. OIDC je dnes standard pro Single Sign-On — podporují ho Google, Microsoft, Apple, Okta, Keycloak a desítky dalších providerů. Pro moderní webové a mobilní aplikace je to doporučený způsob autentizace.
ID Token¶
{
"iss": "https://auth.example.com",
"sub": "user-123",
"aud": "myapp",
"exp": 1706000000,
"email": "[email protected]",
"name": "Jan Novak"
}
ID Token je JWT podepsaný providerem. Obsahuje informace o uživateli (claims) — kdo token vydal (iss), pro koho (aud), kdy vyprší (exp) a identifikátor uživatele (sub). Aplikace musí validovat podpis pomocí JWKS klíčů providera, ověřit iss, aud, exp a nonce (ochrana proti replay útokům).
Discovery¶
# GET https://auth.example.com/.well-known/openid-configuration
{
"issuer": "https://auth.example.com",
"authorization_endpoint": "https://auth.example.com/authorize",
"token_endpoint": "https://auth.example.com/token",
"jwks_uri": "https://auth.example.com/.well-known/jwks.json"
}
Discovery endpoint umožňuje klientům automaticky zjistit všechny endpointy a parametry providera. Díky tomu stačí zadat jednu URL (issuer) a knihovna si zbytek nakonfiguruje sama. Tím se eliminují chyby z ruční konfigurace a usnadňuje migrace mezi providery.
FastAPI implementace¶
from authlib.integrations.starlette_client import OAuth
oauth = OAuth()
oauth.register(
name='google',
server_metadata_url='https://accounts.google.com/.well-known/openid-configuration',
client_id='your-id',
client_secret='your-secret',
client_kwargs={'scope': 'openid email profile'}
)
Většina frameworků má OIDC knihovny, které automatizují celý flow — redirect na provider, výměna authorization code za tokeny, validace ID Tokenu. Pro enterprise aplikace zvažte vlastní Keycloak nebo Zitadel jako identity provider s plnou kontrolou nad uživatelskými daty.
Klíčový takeaway¶
OIDC = OAuth 2.0 + identita. Vždy validujte ID Token (iss, aud, exp, nonce). Používejte discovery endpoint pro automatickou konfiguraci. Pro nové projekty OIDC/OAuth 2.0 namísto vlastní autentizace.