Access Token vs. ID Token: Was ist der Unterschied?

In OpenID Connect (OIDC) gibt es zwei Arten von Token: das Access Token und das ID Token. Doch worin liegt der Unterschied? Und warum wurde neben dem bereits existierenden Access Token überhaupt ein weiteres Token eingeführt?

Bevor OpenID Connect eingeführt wurde, basierte OAuth 2.0 ausschließlich auf dem Access Token. Dieses Token erlaubte es einer Anwendung, über eine API im Namen eines Benutzers auf geschützte Ressourcen einer anderen Anwendung zuzugreifen. Es war jedoch nicht dafür ausgelegt, einen Benutzer direkt bei einer Anwendung anzumelden. Da es an einer standardisierten Lösung zur Übermittlung von Identitätsinformationen fehlte, nutzten viele Anwendungen das Access Token fälschlicherweise für die Nutzeranmeldung – was unsicher und unzuverlässig war. OAuth 2.0 war von Anfang an für Autorisierungszwecke konzipiert, nicht für die Authentifizierung von Benutzern.

Um dieses Problem zu lösen, wurde mit OpenID Connect das ID Token eingeführt. Dieses Token enthält geprüfte Informationen über den angemeldeten Benutzer und wird speziell für die Anmeldung an einer Anwendung genutzt.

In diesem Beitrag erklären wir die wichtigsten Unterschiede zwischen Access Token und ID Token und zeigen, wann welches Token verwendet werden sollte.

Was ist ein Access Token?

Ein Access Token ist ein Sicherheitstoken, das verwendet wird, um auf eine API zuzugreifen. Es kann entweder einer Anwendung selbst den Zugriff auf eine API erlauben oder – wenn es mit einem Benutzer verknüpft ist – einer Anwendung ermöglichen, im Namen des Benutzers auf geschützte Daten einer anderen Anwendung zuzugreifen. In diesem Fall muss der Benutzer zuvor seine Zustimmung (Consent) erteilen.

Das Access Token wird von einem Identity Provider (IDP) wie Keycloak ausgestellt, nachdem entweder eine Anwendung oder ein Benutzer erfolgreich authentifiziert wurde.

Ein Beispiel für den ersten Fall ist ein automatisierter Dienst, der regelmäßig Daten aus einer API abruft, ohne dass ein Benutzer beteiligt ist.

Ein Beispiel für den zweiten Fall: Du meldest dich in einer Notiz-App an und erlaubst ihr, deine Notizen in einem Cloud-Speicher zu sichern. Die App erhält daraufhin ein Access Token, mit dem sie Notizen hochladen oder abrufen kann, ohne dass du dich erneut anmelden musst.

Ein Vorteil eines Access Tokens ist, dass es einer Anwendung ermöglicht, unabhängig davon zu agieren, ob der Nutzer gerade online ist. Stell dir vor, du nutzt eine Cloud-Backup-App, die regelmäßig deine Daten sichert. Dank eines Access Tokens kann die App auch dann auf deine gespeicherten Dateien zugreifen und sie synchronisieren, wenn du gerade nicht aktiv eingeloggt bist. Dies stellt sicher, dass wichtige Daten kontinuierlich aktualisiert und gesichert werden, ohne dass du jedes Mal manuell eingreifen musst.

Was ist ein ID-Token?

Ein ID Token ist ein Sicherheitstoken, das dazu dient, einer Anwendung Informationen über die Identität eines Benutzers bereitzustellen. Es wird von einem Identity Provider (IDP) wie Keycloak ausgestellt, sobald sich ein Benutzer erfolgreich angemeldet hat.

Ein Beispiel: Du meldest dich in einer Notiz-App an. Nach der Anmeldung erhält die App ein ID Token, das Informationen wie deine Benutzer-ID oder E-Mail-Adresse enthält. Damit kann die App erkennen, wer du bist, ohne dich jedes Mal erneut nach deinen Anmeldedaten zu fragen. Das ID Token wird aber nicht verwendet, um auf eine API oder externe Daten zuzugreifen – dafür gibt es das Access Token.

Wichtige Unterschiede im Überblick

MerkmalAccess TokenID Token
ZweckErlaubt den Zugriff auf eine APIWird von der Anwendung genutzt, um den Benutzer zu identifizieren
EnthältBerechtigungen und Zugriffsinformationen für RessourcenBenutzerinformationen (z. B. Benutzer-ID, Name, E-Mail)
Wird ausgewertet vonDer API-Server, der den Zugriff auf geschützte Ressourcen verwaltetDie Anwendung, bei der sich der Benutzer anmeldet
FormatOft JSON Web Token (JWT) oder undurchsichtiger StringJSON Web Token (JWT)

Übrigens: Ein JSON Web Token (JWT) ist ein Token, das lesbare Informationen enthält und direkt geprüft werden kann. Ein undurchsichtiger String hingegen ist ein zufälliger Code, dessen Gültigkeit der API-Server erst beim Identity Provider (IDP) überprüfen muss.


Nach oben scrollen