Top-Fragen
Zeitleiste
Chat
Kontext

JSON Web Token

Aus Wikipedia, der freien Enzyklopädie

Remove ads

Ein JSON Web Token (JWT, vorgeschlagene Aussprache [dʒɒt]) basiert auf JSON und ist in RFC 7519[1] beschrieben. Das JWT ermöglicht den Austausch von verifizierbaren Claims. Es wird typischerweise verwendet, um in einem System mit einem Drittanbieter die Identität eines Benutzers zwischen einem Identity-Provider und einem Service-Provider auszutauschen. JWT eignen sich vor allem zur Implementierung von „Stateless Sessions“, da sämtliche authentifizierungsrelevanten Informationen im Token übertragen werden können und die Sitzung nicht zusätzlich auf einem Server gespeichert werden muss.

Remove ads

Aufbau

Zusammenfassung
Kontext

Ein JWT besteht aus drei Teilen: dem Header, Payload und der Signatur.

Der Header ist ein JSON-Element, welches beschreibt, um welchen Token-Typ es sich handelt und welche Signaturmethode zum Einsatz kommt.

Weitere Informationen Feld, Name ...

Der Header sieht beispielsweise wie folgt aus:

{
  "alg": "HS256",
  "typ": "JWT"
}

Payload

Beim Payload handelt es sich um ein JSON-Element, welches die Claims beschreibt.

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

Einige Claims sind hierbei reserviert:

Weitere Informationen Feld, Name ...

Des Weiteren sind noch Public Claims durch die IANA definiert.[4] Zudem kann der Aussteller des JWT auch einen Private Claim definierten URI verwenden, welche jedoch nicht standardisiert ist. Beispielsweise kann hier eine Ontologie wie Dublin Core oder FOAF zum Einsatz kommen.

Signatur

Der Aufbau der Signatur wird durch JSON Web Signature (JWS), einem nach RFC 7515[5] genormten Standard, definiert.

Die Signatur wird dadurch erzeugt, dass der Header und der Payload im Base64 kodierten und durch einen Punkt getrennten Format mit der spezifizierten Hashmethode (z. B. SHA-256) gehasht und verschlüsselt (z. B. HMAC) wird:

var encodedString = base64UrlEncode(header) + "." + base64UrlEncode(payload);
var signature = HMACSHA256(encodedString, secret);

Codierung

Header, Payload und Signatur werden jeweils mit Base64-URL kodiert und durch jeweils einen Punkt voneinander getrennt. Ein JWT Token kann wie folgt aussehen:

var jwt = base64UrlEncode(header) + "." + base64UrlEncode(payload) + "." + base64UrlEncode(signature)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzY290Y2guaW8iLCJleHAiOjEzMDA4MTkzODAsIm5hbWUiOiJDaHJpcyBTZXZpbGxlamEiLCJhZG1pbiI6dHJ1ZX0.03f329983b86f7d9a9f5fef85305880101d5e302afafa20154d094b229f75773
Remove ads

Übertragung mit HTTP

Zusammenfassung
Kontext

Das JWT kann in der URL oder im HTTP-Header übertragen werden.

http://example.com/path?jwt_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…

Für die Übertragung im HTTP-Header gibt es zwei Möglichkeiten: Das Authorization-Feld oder das Cookie-Feld.

  • im Authorization-Feld als Bearer-Token: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…
  • im Cookie-Feld: Cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…

Die beiden Methoden haben unterschiedliche Vor- und Nachteile:

Weitere Informationen s, Bearer-Token ...
Remove ads

Implementierungen

Implementierungen für JWT steht für eine Vielzahl von Plattformen zur Verfügung. Eine aktuelle Liste findet sich beispielsweise auf der Seite JWT.io.[6]

Security Event Token

Ein Security Event Token (SET) erweitert den JWT Standard um den events Claim, welcher eine Liste von sicherheitsrelevanten Ereignissen aufzeichnet.[7] Diese Tokens haben einen digitalen Zeitstempel und unbegrenzte Gültigkeit. Ein SET-Payload kann wie folgt aussehen:

{
  "iss": "https://server.example.com",
  "sub": "248289761001",
  "aud": "s6BhdRkqt3",
  "iat": 1471566154,
  "jti": "bWJq",
  "sid": "08a5019c-17e1-4977-8f42-65a12843ea02",
  "events": {
    "http://schemas.openid.net/event/backchannel-logout": {}
  }
}

SETs kommen beim Auditing zum Einsatz. SETs werden in RFC 8417[8] spezifiziert.

Remove ads

Siehe auch

Einzelnachweise

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads