OAuth 2.0 behandelt die Autorisierung — wer auf welche Ressourcen zugreifen darf. OIDC (OpenID Connect) fuegt die Authentifizierung hinzu — wer der Benutzer ist. Das Ergebnis ist ein ID Token mit Benutzerinformationen im JWT-Format. OIDC ist heute der Standard fuer Single Sign-On — unterstuetzt von Google, Microsoft, Apple, Okta, Keycloak und Dutzenden weiterer Anbieter. Fuer moderne Web- und Mobile-Anwendungen ist es die empfohlene Authentifizierungsmethode.
ID Token¶
{
"iss": "https://auth.example.com",
"sub": "user-123",
"aud": "myapp",
"exp": 1706000000,
"email": "jan@example.com",
"name": "Jan Novak"
}
Das ID Token ist ein vom Anbieter signiertes JWT. Es enthaelt Benutzerinformationen (Claims) — wer das Token ausgestellt hat (iss), fuer wen (aud), wann es ablaeuft (exp) und die Benutzerkennung (sub). Die Anwendung muss die Signatur mit den JWKS-Schluesseln des Anbieters validieren sowie iss, aud, exp und nonce (Schutz gegen Replay-Angriffe) ueberpruefen.
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"
}
Der Discovery-Endpoint ermoeglicht es Clients, automatisch alle Endpunkte und Parameter des Anbieters zu erkennen. Das bedeutet, Sie muessen nur eine URL (Issuer) angeben und die Bibliothek konfiguriert sich selbst. Dies eliminiert Fehler durch manuelle Konfiguration und vereinfacht die Migration zwischen Anbietern.
FastAPI-Implementierung¶
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'}
)
Die meisten Frameworks verfuegen ueber OIDC-Bibliotheken, die den gesamten Flow automatisieren — Redirect zum Anbieter, Austausch des Authorization Code gegen Tokens und ID-Token-Validierung. Fuer Enterprise-Anwendungen sollten Sie einen eigenen Keycloak oder Zitadel als Identity Provider mit voller Kontrolle ueber Benutzerdaten in Betracht ziehen.
Wichtigste Erkenntnis¶
OIDC = OAuth 2.0 + Identitaet. Validieren Sie immer das ID Token (iss, aud, exp, nonce). Verwenden Sie den Discovery-Endpoint fuer automatische Konfiguration. Fuer neue Projekte OIDC/OAuth 2.0 anstelle benutzerdefinierter Authentifizierung.