JSON Web Token (JWT): Funktionsweise + Beispiele


Der Bereich Payload des JSON Web Tokens ist der Ort, der die tatsächlichen Informationen enthält, die an die Anwendung übermittelt werden sollen. Hierbei sind einige Standards definiert, die festlegen, was und wie bestimmte Daten übermittelt werden. Die Informationen sind als Key-/Value-Paare bereitgestellt, wobei die Schlüssel bei JWT als Claims bezeichnet werden. Es gibt drei unterschiedliche Typen von Claims:

  • Registrierte Claims sind Claims, die im IANA JSON Web Token Claim Register registriert und deren Zweck in einem Standard festgelegt sind. Einige Beispiele sind Aussteller des Tokens („iss“ für Issuer), Zieldomäne („aud“ für Audience) und Verfallszeit („exp“ für Expiration Time). Um die Länge des Tokens möglichst gering zu halten, wurden kurze Claim-Namen verwendet.
  • Öffentliche Claims sind nach Belieben definierbar. Es gibt hier also keine Einschränkungen. Damit keine Kollisionen bei der Semantik der Keys auftreten, ist es notwendig, die Claims im IANA-JSON-Web-Token-Claim-Register öffentlich zu registrieren oder kollisionsresistente Namen zu vergeben.
  • Private Claims sind für Informationen gedacht, die speziell mit der eigenen Anwendung ausgetauscht werden sollen. Während öffentliche Claims Informationen wie „Name“ oder „E-Mail“ enthalten, sind private Claims spezifischer. Eine typische Information ist beispielsweise eine „Benutzer-ID“ oder ein konkreter „Abteilungsname“. Wichtig ist es, bei der Namensgebung darauf zu achten, dass keine Kollision mit registrierten oder öffentlichen Claims entsteht.

Alle Claims sind optional. Man muss also nicht jeden registrierten Claim verwenden. Generell können Payloads beliebig viele Claims enthalten, es empfiehlt sich jedoch, die Informationen im JWT auf das Nötigste zu begrenzen. Je größer das JWT, desto mehr Ressourcen benötigt es bei der (De-)Kodierung.

Die Payload kann demnach folgendermaßen aufgebaut sein:



Source link

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.