Logo Logo
GitHub Designed by Logto

Was ist ein Opaque Token?

Ein Opaque Token ist eine zufällige, einzigartige Zeichenfolge, die für den Client bedeutungslos ist, aber als Referenzschlüssel dient, um Autorisierungsdaten in der Datenbank des Servers nachzuschlagen.

Opaque Tokens werden normalerweise mit einem Kryptografisch sicherer Pseudozufallszahlengenerator generiert, um ihre Unvorhersehbarkeit und Sicherheit zu gewährleisten, und ihr Format wird durch ihren issuer bestimmt.

Hier ist ein Beispiel für ein Opaque Token:

M-oxIny1RfaFbmjMX54L8Pl-KQEPeQvF6awzjWFA3iq

Was ist der Unterschied zwischen JWT (JSON Web Token) und Opaque Token?

Der Hauptunterschied liegt darin, wie diese Tokens Autorisierungsinformationen handhaben und validieren:

Ein Opaque Token ist eine zufällige Zeichenfolge, die selbst keine Informationen enthält. Der Server muss seine Backend-Datenbank abfragen, um alle mit diesem Token verbundenen Autorisierungsdaten abzurufen. Dies macht Opaque Tokens vollständig abhängig vom authorization server für die Validierung und Interpretation.

JWT ist ein eigenständiges Token, das alle notwendigen Informationen in sich trägt.

Hier ist ein Beispiel für ein JWT, es ist eine base64-codierte Zeichenfolge:

eyJhbGciOiJIUzI1NiIs.eyJzdWIiOiIxMjM0NTY3O.SflKxwRJSMeKKF2QT4f

Und es enthält drei Teile, die durch Punkte getrennt sind:

  1. Header - Enthält Informationen über den Typ des Tokens und den Algorithmus, der für die Signierung verwendet wird. Zum Beispiel {"alg": "HS256", "typ": "JWT"}.
  2. Payload - Enthält claims—Informationen über den Benutzer oder die Autorisierung, wie Benutzer-ID, Ablaufzeit und scopes. Jeder kann es dekodieren, um die claims zu sehen, da es kodiert, aber nicht verschlüsselt ist.
  3. Signature - Wird durch die Kombination von Header, Payload und einem geheimen Schlüssel unter Verwendung des angegebenen Algorithmus generiert. Diese Signatur wird verwendet, um die Integrität des Tokens zu überprüfen und sicherzustellen, dass es nicht manipuliert wurde.

Diese Struktur ermöglicht es, JWTs zu validieren und zu verwenden, ohne eine Datenbank abzufragen.

Für detailliertere Informationen über JWTs, siehe JSON Web Token (JWT) .

Und schau dir Opaque Token vs JWT an, um mehr über ihre Unterschiede im Detail zu erfahren.

Wie validiert man ein Opaque Token?

In einfachen Systemen wird die Validierung von Opaque Tokens typischerweise direkt vom Server gehandhabt, der die Datenbank mit dem Opaque Token als Schlüssel abfragt, um die zugehörigen Autorisierungsinformationen abzurufen.

In Mehrparteien-Systemen, die OAuth 2.0 einführen, müssen möglicherweise mehrere resource servers (siehe: Ressourcenserver (Resource server) ) dasselbe Opaque Token validieren. OAuth 2.0 bietet einen standardisierten token introspection Mechanismus für diese Validierung:

Für detaillierte Informationen über token introspection, siehe Tokenintrospektion (Token introspection) .

Wie werden Opaque Tokens in OIDC verwendet?

Im Kontext von OIDC ( OpenID Connect (OIDC) ) dienen Opaque Tokens spezifischen Zwecken in verschiedenen Szenarien:

Benutzerprofilabruf

Standardmäßig, wenn ein Client ein access token anfordert, ohne eine Ressource anzugeben und den openid scope einschließt, stellt der authorization server ein Opaque access token aus. Dieses Token wird hauptsächlich verwendet, um Benutzerprofilinformationen vom OIDC /oidc/userinfo endpoint abzurufen (siehe: Userinfo-Endpoint ).

Austausch von Refresh Tokens

Refresh tokens (siehe: Aktualisierungs-Token (Refresh token) ) werden typischerweise als Opaque Tokens ausgegeben, da sie nur zwischen dem Client und dem authorization server ausgetauscht werden. Wenn das aktuelle access token abläuft, kann der Client das Opaque refresh token verwenden, um ein neues access token zu erhalten, ohne den Benutzer erneut zu authentifizieren.

Was sind die Vor- und Nachteile von Opaque Token?

Vorteile

  • Sicherheit: Opaque Tokens sind perfekt für den Umgang mit sensiblen Daten wie refresh tokens. Da der Inhalt völlig zufällig und bedeutungslos ist, kann selbst wenn jemand das Token abfängt, keine nützlichen Informationen extrahiert werden. Dies macht sie besonders wertvoll in Hochsicherheitsszenarien wie Banktransaktionen oder beim Umgang mit sensiblen Benutzerdaten.

  • Widerrufbarkeit: Der Server kann ein Opaque Token jederzeit sofort ungültig machen. Dies ist besonders nützlich, wenn du schnell den Benutzerzugriff entfernen musst. Im Gegensatz zu JWTs, die bis zu ihrem Ablauf gültig bleiben, können Opaque Tokens sofort widerrufen werden (siehe: Einschränkungen von JWT ).

  • Größe: Opaque Tokens sind typischerweise viel kürzer als JWTs. Diese kleinere Größe reduziert den Netzwerkbandbreitenverbrauch und die Speicheranforderungen. Der Vorteil wird besonders in Systemen bemerkbar, die häufig Tokens übertragen, wie mobile Anwendungen oder IoT-Geräte.

  • Einfachheit: Die Implementierung von Opaque Tokens ist unkompliziert. Du generierst eine zufällige Zeichenfolge und speicherst sie mit den zugehörigen Daten. Es ist nicht notwendig, komplexe Verschlüsselungen oder Signaturüberprüfungen wie bei JWTs zu handhaben. Diese Einfachheit macht sie ideal für die Authentifizierung interner Systeme.

Nachteile

  • Zustandsbehaftet: Jedes Opaque Token erfordert eine Speicherung auf der Serverseite. Dies schafft zusätzliche Komplexität in verteilten Systemen, da Token-Daten über mehrere Server hinweg synchronisiert werden müssen. Zum Beispiel, wenn du mehrere authentication servers hast, benötigen alle Zugriff auf dieselbe Token-Datenbank oder Cache-System, um Tokens ordnungsgemäß zu validieren.

  • Leistung: Die Token-Validierung erfordert immer eine Datenbankabfrage oder einen API-Aufruf. In stark frequentierten Systemen können diese zusätzlichen Datenbankabfragen Leistungsengpässe verursachen. Zum Beispiel, wenn dein System Tausende von Anfragen pro Sekunde verarbeitet, die jeweils eine Token-Validierung erfordern, wird die zusätzliche Datenbanklast signifikant.

  • Interoperabilität: Verschiedene Systeme könnten Opaque Tokens auf unterschiedliche Weise implementieren. Dies kann Integrationsherausforderungen verursachen, wenn mit Drittanbieterdiensten oder verschiedenen authorization servers gearbeitet wird. Während Standards wie OAuth 2.0 token introspection helfen, kannst du dennoch auf Kompatibilitätsprobleme stoßen, wenn Systeme unterschiedliche Token-Formate oder Validierungsmethoden verwenden.

Siehe auch