JSON-Web-Token als Bausteine für Cloud-Sicherheit

Autor

Henrik Loeser

Technical Offering Manager / Developer Advocate

Erfahren Sie, wie Sie Ihre Identität beanspruchen können.

Ich bin mir nicht sicher, wann ich zum ersten Mal einen JSON Web Token (JWT) gesehen habe, aber seitdem habe ich viele davon gesehen. Für das ungeschulte Auge sehen sie aus wie eine verstümmelte Computerausgabe:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30._iVbBcypdse-9sjrxp9iOrGsXKBWrBB3mrHgBtukcfM

Tatsächlich enthalten die oben genannten Daten (und JWT im Allgemeinen) wichtige Informationen, die sich direkt auf die Sicherheit sowohl in der Cloud als auch On-Premises auswirken. Es handelt sich um Informationen zur Identifizierung und Authentifizierung von Benutzern. JWT sind entscheidend für das Funktionieren von Microservice-basierten Lösungen und ein wichtiger Baustein zur Realisierung von 12-Faktor-Apps.

In diesem Blogbeitrag gebe ich Auskunft über die Geschichte von JWTs, stelle ihre grundlegenden Konzepte vor und betrachte gängige Anwendungsszenarien für JWTs in der IBM Cloud.

 

Würde Ihr Team den nächsten Zero-Day rechtzeitig erkennen?

Schließen Sie sich Führungskräften im Bereich Sicherheit an, die von den kuratierten Nachrichten zu KI, Cybersicherheit, Daten und Automatisierung im Think Newsletter profitieren. Lernen Sie schnell von Experten-Tutorials und Erläuterungen, die direkt in Ihren Posteingang geliefert werden. Weitere Informationen finden Sie in der IBM Datenschutzerklärung.

Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.

https://www.ibm.com/de-de/privacy

Geschichte über JWT

Der erste Entwurf für JSON Web Token ist bereits über 10 Jahre alt (Dezember 2010). In einem frühen Entwurf heißt es: „JSON Web Token (JWT) definiert ein Token-Format, das Anforderungen kodieren kann, die zwischen zwei Parteien übertragen werden. Die Anforderungen in einem JWT werden als JSON-Objekt codiert, das digital signiert ist.“

In seiner neuesten Version, IETF RFC 7519, wurde er wie folgt erweitert:„Das JSON Web Token (JWT) ist ein kompaktes, URL-sicheres Mittel zur Darstellung von Anforderungen, die zwischen zwei Parteien übertragen werden sollen. Die Ansprüche in einem JWT werden als JSON-Objekt codiert, das als Nutzdaten einer JSON Web Signature-Struktur (JWS) oder als Klartext einer JSON Web Encryption-Struktur (JWE) verwendet wird, sodass die Anforderungen digital signiert oder deren Integrität mit einem Message Authentication Code (MAC) geschützt bzw. verschlüsselt werden können.“

Die neue Beschreibung deutet auf zwei Darstellungsformen eines JWT (oft ausgesprochen „Jot“) hin – nämlich eine JSON Web Signature (JWS) oder eine JSON Web-Verschlüsselungsstruktur (JWE). JWS ist in RFC 7515 definiert, JWE in RFC 7516. Es gibt sogar noch einige weitere verwandte JSON-basierte Sicherheitsstandards, die alle von einer Arbeitsgruppe namens JOSE: JSON Object Signing and Encryption definiert werden.

OAuth 2.0 ist ein Branchenstandard für die Autorisierung. Ohne ins Detail zu gehen, bietet es einen Autorisierungsablauf und Kernkonzepte, darunter das sogenannte Zugriffstoken und das Aktualisierungstoken. Die Verwendung von JWTs ist nicht zwingend erforderlich, aber sie kommen heutzutage für gewöhnlich zum Einsatz. Wie bereits erwähnt, liegt der Fokus von OAuth auf der Autorisierung, und es wurde gelegentlich auch zur Identifizierung missbraucht. OpenID Connect fügt dieses fehlende Puzzleteil hinzu und führt die Identität oder das ID-Token ein. Das ID-Token wird als JWT dargestellt.

JWT-Kodierung und -Dekodierung

Wie können wir mit dieser Geschichte und einigen Standards als Grundlage das JWT von oben verarbeiten und welche Informationen enthält es?

Das obige JWT besteht aus drei Teilen, die jeweils durch einen Punkt ('.') getrennt sind:

  1. Header:: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
  2. Payload: eyJzdWIiOiIxMjM0Nty3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MtyxMTIzNDU2N30
  3. Signatur: _iVbBcypdse-9sjrxp9iOrGsXKBWrBB3mrHgBtukcfM

Sowohl Header als auch Payload sind Base64url- kodiert und können wie folgt dekodiert werden, wenn mögliches Padding nicht berücksichtigt wird:

henrik@home> base64 -d <<< eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
{"alg":"HS256","typ":"JWT"}

henrik@home> base64 -d <<< eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30
{"sub":"1234567890ABC","name":"Henrik Loeser","iat":1611140400,"exp":1611234567}base64: invalid input

Der Header enthält Informationen über den verwendeten alg(orithm) – hier HS256 (HMAC SHA256). Die Payload hängt von der Art des Tokens (Zugriff/Aktualisierung/ID/…) ab und besteht aus Anforderungen. Diese und andere vordefinierte JOSE Header- und Payload-Felder werden von IANA verwaltet. Im obigen Beispiel sind die Felder und Anforderungen subj(ect), Name, ausgestellt am (iat) und exp(iration time).

Die Signatur wird berechnet, indem der angegebene Algorithmus auf die Verkettung von Header, '.' und Payload analysiert und anschließend das Ergebnis mit base64url kodiert. Danach bilden die drei durch einen Punkt getrennten Teile das JWT. Einzelheiten zur Ableitung von Signaturen sind in RFC 7515 definiert.

Sie können auf das oben genannte JWT in diesem Online-Debugger unter JTW.io zugreifen. Zunächst wird die Meldung „Invalid Signature“ (Ungültige Signatur) angezeigt. Sie können sie beheben, indem Sie das angezeigte Standardgeheimnis durch !my-really-big-256-bit-secret! ersetzen.

IBM Cloud und JWTs

Da IBM Cloud viele Services in seinem Katalog bereitstellt und es sich um eine App mit vielen eigenen Komponenten handelt, nutzt sie häufig Token, einschließlich JWTs. Wahrscheinlich haben Sie schon die IBM Cloud Command Line Interface (CLI) und den Befehl ibmcloud IAM OAuth-Token: verwendet.

Es gibt die OAuth-Bearer-Token (Zugriffstoken) für die aktuelle CLI-Sitzung aus, die als JWTs implementiert sind. Diese IAM-Token werden für den Zugriff auf IAM-fähige Cloud-Services verwendet. 

Wenn Sie externe Benutzer in Ihr Cloud-Konto integrieren möchten, werden ebenfalls JWTs verwendet. Token und die darin enthaltenen Anforderungen werden zur Authentifizierung ausgetauscht, um den Benutzer zu identifizieren. Viele Lösungen nutzen den Sicherheitsdienst IBM Cloud App ID. Er dient zur Authentifizierung von Benutzern und zum Schutz von Ressourcen. Er nutzt die erwähnten Standards OAuth 2.0 und OpenID Connect und befasst sich daher mit Zugriffs-, ID- und Aktualisierungstoken.

Einer meiner (und Ihrer) Lieblingsdienste ist watsonx Assistant zur Entwicklung von Chatbots. Wenn Sie Web-Chats sichern möchten (d. h. um ausgetauschte Nachrichten weiter zu schützen und den Ursprung von Nachrichten zu zertifizieren), können JWTs helfen.

Natürlich gibt es noch viele weitere Beispiele dafür, wie JWTs verwendet werden, um (Sicherheits-)Ansprüche einfach auszutauschen und so die Sicherheit einer Cloud-Lösung zu erhöhen.

Zusammenfassung

JWTs sind ein einfaches, eigenständiges Mittel zum Austausch von Anforderungen zwischen zwei Parteien. Sie sind eine allgegenwärtige Datenstruktur, in der Cloud und On-Premises. Wir hoffen, dass die obigen Informationen eine nützliche Einführung waren, um Ihr Interesse zu wecken (wenn Sie es nicht schon sind!).

Wenn Sie JWTs selbst untersuchen und ausprobieren möchten, empfehle ich Ihnen für den Anfang ein Online-Tool wie https://jwt.io/ . Wenn Sie sich bereits etwas auskennen, verwenden Sie einen Netzwerkmonitor oder die Developer Tools in Ihrem Browser, um auf JWTs zu achten. Viel Spaß dabei! Schauen Sie sich unsere IBM Cloud Tutorials an, einschließlich vieler sicherheitsbezogener Tutorials.

Wenn Sie Feedback, Vorschläge oder Fragen zu diesem Beitrag haben, wenden Sie sich bitte über Twitter (@data_henrik) oder LinkedIn an mich.

Weiterführende Lösungen
Lösungen zu Datensicherheit und Datenschutz

Schützen Sie Ihre Daten in mehreren Umgebungen, erfüllen Sie Datenschutzauflagen und verringern Sie die Komplexität von Betriebsabläufen.

    Mehr über Datensicherheitslösungen
    IBM Guardium

    Entdecken Sie IBM Guardium, eine Datensicherheitssoftware-Reihe, die sensible On-Premises- und Cloud-Daten schützt.

     

      Entdecken Sie IBM Guardium
      Datensicherheitsservices

      IBM bietet umfassende Datensicherheitsservices zum Schutz von Unternehmensdaten, Anwendungen und KI.

      Mehr über Datensicherheitsservices
      Machen Sie den nächsten Schritt

      Schützen Sie die Daten Ihres Unternehmens über Hybrid Clouds hinweg und vereinfachen Sie Compliance-Anforderungen mit Datensicherheitslösungen.

      Mehr über Datensicherheitslösungen Buchen Sie eine Live-Demo