0Pricing
Cryptology Academy · Lektion

OpenID-Connect-Claims und ID-Tokens

Dekodieren Sie JWT-basierte ID-Tokens, verstehen Sie die Validierung von Claims und implementieren Sie OIDC korrekt.

OpenID-Connect-Claims und ID-Tokens ist eine kostenlose Cryptology Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cryptology Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.

OIDC als Identitätsschicht

OpenID Connect (OIDC) fügt OAuth 2.0 eine Identitätsschicht hinzu. Während OAuth 2.0 die Autorisierung regelt (auf welche Ressourcen darf diese App zugreifen?), beantwortet OIDC die Identitätsfrage (wer ist der Benutzer?). OIDC wird aktiviert, indem der Scope "openid" zu einer OAuth-2.0-Anfrage hinzugefügt wird. Dadurch gibt der Authorization Server neben dem Access-Token auch ein ID-Token zurück.

ID-Token als JWT

Das OIDC-ID-Token ist ein JSON Web Token (JWT), das Claims über den authentifizierten Benutzer enthält. Das JWT wird vom Authorization Server typischerweise mit dessen privatem Schlüssel signiert (RS256 oder ES256). Die Relying Party (Client-Anwendung) überprüft die Signatur mithilfe der veröffentlichten öffentlichen Schlüssel des Authorization Servers (JWKS-Endpunkt).

Standard-Claims von ID-Tokens

Erforderliche und häufig verwendete Claims eines ID-Tokens: "sub" (Subject, eindeutige Benutzerkennung), "iss" (Issuer, URL des Authorization Servers), "aud" (Audience, Client-ID), "exp" (Unix-Zeitstempel des Ablaufs), "iat" (Unix-Zeitstempel der Ausstellung). Optional: "auth_time" (Zeitpunkt der Authentifizierung), "nonce" (Schutz vor Replay-Angriffen), "at_hash" (Hash des Access-Tokens), "acr" (Klasse des Authentifizierungskontexts), "amr" (verwendete Authentifizierungsmethoden).

UserInfo-Endpunkt

Der OIDC-UserInfo-Endpunkt gibt zusätzliche Claims über den authentifizierten Benutzer zurück, wenn er mit einem gültigen Access-Token aufgerufen wird. Clients fordern bestimmte Claim-Sätze über Scopes an: "profile" (Name, Bild, Sprache und Region), "email" (E-Mail-Adresse, Bestätigung der E-Mail-Adresse), "address" (formatierte Adresse), "phone" (Telefonnummer, Bestätigung der Telefonnummer). Die UserInfo-Antwort ist ein JSON-Objekt oder ein JWT.

ID-Token validieren: Signatur

Die Validierung eines ID-Tokens beginnt mit der Überprüfung der Signatur. Der Client ruft das JWKS (JSON Web Key Set) des Authorization Servers über den Well-Known-Endpunkt ab, sucht den Schlüssel, der zum "kid"-Parameter (Key-ID) im JWT-Header gehört, und überprüft die JWT-Signatur. Dadurch wird nachgewiesen, dass das Token vom legitimen Authorization Server ausgestellt und nicht manipuliert wurde.

Claims validieren: iss, aud, exp

Nach der Signaturprüfung muss der Client Folgendes validieren: "iss" muss exakt mit der erwarteten URL des Authorization Servers übereinstimmen (einschließlich Schema und Pfad). "aud" muss die eigene client_id des Clients enthalten. "exp" muss in der Zukunft liegen (abgelaufene Tokens werden abgelehnt). "iat" sollte ausreichend aktuell sein. Alle vier Prüfungen sind gemäß der OIDC-Spezifikation verpflichtend.

Nonce zum Schutz vor Replay-Angriffen

Der Claim nonce verhindert Replay-Angriffe mit ID-Tokens. Der Client erzeugt eine zufällige Nonce und fügt sie in die Autorisierungsanfrage ein. Der Authorization Server übernimmt die Nonce in das ID-Token. Der Client überprüft, ob die Nonce im ID-Token mit der gesendeten Nonce übereinstimmt. Dadurch wird verhindert, dass ein Angreifer, der ein ID-Token abfängt, es zur Authentifizierung in einer anderen Sitzung wiederverwendet.

Schwachstellen des Implicit-Flow-ID-Tokens

Wenn OIDC den Implicit Flow verwendet (response_type=id_token), wird das ID-Token direkt im URL-Fragment zurückgegeben. Der Client muss at_hash (den Hash des Access-Tokens) validieren, um das Access-Token an das ID-Token zu binden. Ohne die Validierung von at_hash sind Angriffe durch das Austauschen des Access-Tokens möglich. Dies ist ein weiterer Grund dafür, dass der Implicit Flow als veraltet gilt.

OIDC-Scopes und Claims

OIDC definiert standardisierte Zuordnungen von Scopes zu Claims. Der Scope "openid" ist verpflichtend und gibt den Claim "sub" zurück. "profile" gibt name, given_name, family_name, nickname, picture, website, locale, zoneinfo und updated_at zurück. "email" gibt email und email_verified zurück. Das Anfordern unnötiger Scopes verstößt gegen das Prinzip der Datenminimierung und kann sensible Benutzerdaten offenlegen.

Claim-Injection durch bösartige Provider

Bei der Implementierung einer OIDC-Anmeldung mit mehreren Providern (z. B. "Sign in with Google" und "Sign in with GitHub") sind Claim-Injection-Angriffe möglich. Wenn ein Angreifer bei Provider B ein Konto mit der E-Mail-Adresse eines Opfers erstellt, das Provider A verwendet, kann er möglicherweise Zugriff erlangen, wenn die Anwendung Konten ausschließlich anhand des E-Mail-Claims zusammenführt. Ordnen Sie Konten immer anhand des Paars (iss, sub) zu, nicht anhand der E-Mail-Adresse allein.

Einsatzmöglichkeiten des Hybrid Flows

Der OIDC Hybrid Flow (response_type=code id_token) gibt sowohl einen Autorisierungscode als auch ein ID-Token vom Authorization-Endpunkt zurück. Das ID-Token ermöglicht eine sofortige Identitätsprüfung, während der Code über den Backchannel gegen Tokens eingetauscht wird. Dieser Flow wird verwendet, wenn der Client sofort Benutzerinformationen anzeigen muss, bevor der Token-Austausch über den Backchannel abgeschlossen ist.

Prüfung der ID-Token-Claims

Welche Kombination von Claims muss eine Relying Party in einem OIDC-ID-Token validieren?

Lektionszusammenfassung: OIDC-Claims und ID-Tokens

OIDC fügt OAuth-2.0-Flows ein signiertes JWT-ID-Token hinzu. Validieren Sie die Signatur (JWKS), iss (exakte Übereinstimmung), aud (client_id), exp (nicht abgelaufen) und nonce (falls gesendet). Der UserInfo-Endpunkt stellt über Scopes zusätzliche Claims bereit. Ordnen Sie Konten anhand des Paars (iss, sub) zu, niemals nur anhand der E-Mail-Adresse, um Claim-Injection zu verhindern. Der Implicit Flow gilt als veraltet; verwenden Sie für OIDC den Authorization Code Flow mit PKCE.

Häufig gestellte Fragen

Ist die Lektion „OpenID-Connect-Claims und ID-Tokens“ kostenlos?

Ja — der vollständige Text von „OpenID-Connect-Claims und ID-Tokens“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cryptology Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „OpenID-Connect-Claims und ID-Tokens“?

Dekodieren Sie JWT-basierte ID-Tokens, verstehen Sie die Validierung von Claims und implementieren Sie OIDC korrekt. Du übst Cryptology Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Cryptology Academy zu starten?

Keine Vorkenntnisse erforderlich. Cryptology Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „OpenID-Connect-Claims und ID-Tokens“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Cryptology Academy-Lektion Code schreiben und ausführen?

Ja. Jede Cryptology Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. OAuth-2.0-Flows und Tokentypen
  2. PKCE: Öffentliche Clients absichern
  3. OpenID-Connect-Claims und ID-Tokens
  4. OAuth-Schwachstellen und Angriffsmuster
← Zurück zu Cryptology Academy