Was ist eine tokenbasierte Authentifizierung?

Die tokenbasierte Authentifizierung ist eine Möglichkeit, die Identität eines Nutzers oder Geräts zu bestätigen. Dabei wird überprüft, ob die betreffende Person ein zuvor ausgegebenes Token besitzt.

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • Tokenbasierte Authentifizierung definieren
  • Die beiden Arten der tokenbasierten Authentifizierung beschreiben
  • Token-Authentifizierung mit der cookiebasierten Authentifizierung für Webanwendungen vergleichen

Ähnliche Inhalte


Möchten Sie noch mehr erfahren?

Abonnieren Sie theNET, Cloudflares monatliche Zusammenfassung der beliebtesten Einblicke in das Internet!

Lesen Sie die Cloudflare Datenschutzrichtlinie, um zu erfahren, wie wir Ihre persönlichen Daten sammeln und verarbeiten.

Link zum Artikel kopieren

Was ist eine tokenbasierte Authentifizierung?

Bei der tokenbasierten Authentifizierung wird die Identität durch die Überprüfung eines Tokens verifiziert. In der Zugriffsverwaltung verwenden Server die Token-Authentifizierung, um die Identität eines Nutzers, einer API, eines Computers oder eines anderen Servers zu überprüfen.

Ein Token ist ein symbolischer Gegenstand, der von einer vertrauenswürdigen Quelle ausgestellt wird – vergleichen Sie dies mit dem Ausweis von Strafverfolgungsbeamten, der ihre Autorität legitimiert. Token können entweder physisch (wie ein USB-Stick) oder digital (eine computergenerierte Nachricht oder digitale Signatur) sein.

Die tokenbasierte Authentifizierung kann sich auf eine Reihe verschiedener Verfahren beziehen:

  1. Die Identitätsverifizierung über einen physischen Token. Dies ist ein weit verbreiteter Authentifizierungsfaktor für die Anmeldung: Nutzer werden aufgefordert, ihren Token vorzulegen, wenn sie sich bei einem Konto oder einem Gerät anmelden. (Authentifizierungsfaktoren werden unter Was ist Authentifizierung? ausführlicher beschrieben)
  2. Bestätigung der Identität über ein Web-Token. Web-Tokens sind rein digital. Ein Web-Token wird von einem Server generiert und an einen Client gesendet. Das Token wird an jede Client-Anfrage angehängt, so dass der Server die Identität des Clients kennt und weiß, auf welche Daten der Client zugreifen kann. Diese Art der tokenbasierten Authentifizierung steht im Gegensatz zur Cookie-basierten Authentifizierung, die auf ähnliche Weise das Gleiche erreicht – mehr dazu weiter unten.

Wie funktioniert die Authentifizierung mit einem physischen Token?

Die Authentifizierung mit einem physischen Token erfolgt in der Regel während des Anmeldevorgangs des Nutzers. Der Nutzer muss nachweisen, dass er einen Gegenstand besitzt, den sonst niemand hat. Dies kann durch die Eingabe eines Codes geschehen, der auf dem Gegenstand angezeigt wird, durch das Verbinden des Gegenstands mit einem Gerät über USB, durch das Verbinden des Gegenstands über Bluetooth oder durch verschiedene andere Methoden. Ähnlich wie die Eingabe eines Passworts beweist, dass der Nutzer über ein Wissen verfügt, das sonst niemand hat, beweist die Verwendung eines Tokens, dass ein Nutzer einen Gegenstand besitzt, den nur er hat.

Es gibt zwei Arten von Token, die für diese Art der Authentifizierung verwendet werden: Soft Token und Hard Token.

  • Bei Soft-Token wird ein geheimer Code oder eine Nachricht an ein Gerät gesendet, um den Besitz des Geräts zu beweisen. Dies geschieht oft in Form eines Codes, der per SMS an ein Smartphone gesendet wird.
  • Hard Token sind Hardwareelemente, die der Nutzer direkt an einen Computer oder ein Mobilgerät anschließt, um sich anzumelden.

Wie funktioniert die Authentifizierung per Web-Token?

Ein Web-Token ist digital und kein physischer Gegenstand. Es handelt sich um eine Nachricht, die von einem Server an einen Client gesendet und vom Client vorübergehend gespeichert wird. Der Client fügt eine Kopie des Tokens in nachfolgende Anfragen an den Server ein, um den Authentifizierungsstatus des Clients zu bestätigen.

Während bei der Authentifizierung mit physischen Token die Identität während des Anmeldevorgangs überprüft wird, werden Web-Tokens als Ergebnis einer erfolgreichen Anmeldung ausgegeben. Sie halten die eingeloggte Sitzung aktiv.

Die Verwendung von Web-Tokens für Nutzersitzungen ist jedoch nicht immer ideal. Viele Entwickler befürworten stattdessen die Verwendung von Cookies. Web-Tokens eignen sich besser für die Authentifizierung von API-Endpunkten oder zur Validierung einer Verbindung zwischen Servern statt zwischen Server und Client.

Was ist ein JSON-Web-Token (JWT)?

In der Webentwicklung bezieht sich der Begriff „Web Token“ fast immer auf JSON Web Token. JSON Web Token (JWT) ist ein Standard für die Erstellung digital signierter Web-Tokens, die JavaScript Object Notation (JSON) Daten enthalten. Ein Server erstellt ein Token, das die Identität des Kunden nachweist, und sendet es an den Kunden. JWT verwendet digitale Signaturen, um zu beweisen, dass das Token legitim ist.

JWTs bestehen aus drei Komponenten:

  • Header: Der Header enthält Informationen über das JWT – welche Art von Token das JWT ist und welche Methode zur digitalen Signatur verwendet wurde.
  • Nutzlast: Hier können beliebige JSON-Daten untergebracht werden. JWT-Nutzlasten für die Authentifizierung enthalten Angaben über die Identität des Nutzers in der Nutzlast. Sie können auch Informationen über die Berechtigungen des Nutzers, des Servers oder des API-Endpunkts enthalten.
  • Digitale Signatur: Die Signatur verwendet Kryptographie, um den Header und die Nutzlast mit einem Schlüssel zu signieren, um sicherzustellen, dass die darin enthaltenen Daten legitim sind. Stellen Sie sich die digitale Signatur wie ein fälschungssicheres Siegel auf einer Medikamentendose vor.

Tokenbasierte Authentifizierung (JWT) vs. cookiebasierte Authentifizierung

JWTs werden manchmal verwendet, um Nutzer zu authentifizieren, sobald sie sich bei einer Webanwendung angemeldet haben. Allerdings eignen sich auch Cookies für diesen Zweck.

Ein Cookie ist eine kleine Datendatei, die ein Server an einen Client sendet. Wenn sich ein Nutzer bei einer Webanwendung anmeldet, erzeugt der Server ein Cookie und sendet es an das Client-Gerät (in der Regel der Computer oder das Smartphone des Nutzers). Das Client-Gerät speichert das Cookie im Cache des Browsers und fügt eine Kopie des Cookies in zukünftige Anfragen an den Server ein, ähnlich wie JWTs verwendet werden können. Sobald sich der Nutzer abmeldet, löscht der Browser das Cookie.

Cookies haben im Vergleich zu JWTs eine viel geringere Dateigröße, da JWTs neben der Nutzlast auch Header und digitale Signaturen enthalten. Im Gegensatz dazu enthält das Cookie nur die Nutzlast. Dadurch sind sie in Bezug auf die Web-Performance und die Bandbreite wesentlich effizienter.

  • Web Performance: Ein Cookie wird schneller geladen, weil es weniger Informationen enthält – wie ein Foto, das schneller heruntergeladen wird als ein Video.
  • Bandbreite: Da Cookies kleiner sind, verringern sie die Gesamtmenge der Daten, die zwischen Client und Server über das Netzwerk übertragen werden müssen. Dies kann zu Kosteneinsparungen im Vergleich zu JWTs für den Betreiber der Webanwendung führen.

JWTs sind nicht für die Performance optimiert, da sie digitale Signaturen enthalten, die sicherstellen, dass ihr Inhalt nicht manipuliert wurde. Aber wenn eine Webanwendung HTTPS verwendet (was sie tun sollte), sollte ein Cookie ohnehin fälschungssicher sein. HTTPS verschlüsselt und signiert das Cookie zusammen mit allen anderen HTTP-Daten, die zwischen Client und Server ausgetauscht werden, und Angreifer sollten nicht in der Lage sein, es zu fälschen oder während der Übertragung abzufangen, es sei denn, sie führen einen On-Path-Angriff durch.

JWTs sind besser für APIs und Server-zu-Server-Verbindungen geeignet. Solche Anwendungen müssen nicht so stark skaliert werden: Eine Webanwendung mag eine Million Nutzer haben, aber sie wird nicht eine Million API-Verbindungen haben. Dadurch werden die möglichen Auswirkungen auf Performance und Bandbreite reduziert. Andere Authentifizierungsmethoden, wie mutual TLS, sind jedoch manchmal effizienter für APIs – erfahren Sie mehr über mutual TLS.