4D NetKit: Dekodierung, Generierung und Validierung von JWT

Automatisch übersetzt von Deepl

JSON Web Tokens (JWT) haben sich zu einem wichtigen Standard für die sichere Authentifizierung und den Informationsaustausch zwischen Systemen entwickelt. Mit JWT können Sie Daten auf sichere, überprüfbare und standardisierte Weise übertragen und so die Komplexität reduzieren und gleichzeitig die Sicherheit verbessern. Insbesondere bei der Arbeit mit OpenID Connect sind JWTs unverzichtbar, da sie die Validierung und Dekodierung der vom OpenID Provider zurückgegebenen Informationen ermöglichen.

Innerhalb von 4D 21 bietet 4D NetKit eine einfache API zur Handhabung dieser Token: Dekodierung, Erzeugung und Validierung.

Wann erhält Ihre Anwendung ein JWT?

Ein JWT wird normalerweise während eines Authentifizierungs- oder Autorisierungsprozesses empfangen. Beispiele hierfür sind:

  • Nachdem sich ein Benutzer über einen OpenID Connect-Anbieter angemeldet hat.

  • Wenn eine externe API ein Token zurückgibt, um Zugriff auf ihre Ressourcen zu gewähren.

  • Bei der Kommunikation zwischen Diensten, wenn ein Server ein JWT für einen anderen Dienst ausgibt, um die Identität oder Berechtigungen zu überprüfen.

In all diesen Szenarien muss Ihre Anwendung das Token dekodieren und validieren, bevor es verwendet werden kann.

Dekodierung und Validierung eines JWT

Wenn Ihre Anwendung ein JWT empfängt, sind normalerweise zwei Schritte erforderlich:

  1. Dekodierung des Tokens, um seinen Inhalt (Ansprüche) zu prüfen.
  2. Validierung des Tokens, um sicherzustellen, dass es nicht verändert wurde und wirklich von einer vertrauenswürdigen Quelle stammt.
var $JWT:=cs.NetKit.JWT.new()

// Decode the JWT token: this method extracts the token’s contents
// (such as header, payload, and signature) without necessarily verifying its validity
var $result := $JWT.decode($token)

// Validate the token: this step checks that the token is correctly signed with the provided key 
var $isValid:= $JWT.validate($token; $key)

Generierung eines JWT

Zusätzlich zur Dekodierung und Validierung müssen Sie möglicherweise Ihre eigenen JWTs generieren. Zum Beispiel, wenn Sie ein System aufbauen, das Token an Clients ausgibt, oder wenn Sie ein Token zur Authentifizierung bei einer externen API erstellen.

// Define the JWT claims object, starting with the header
var $claims:={header: {alg: "HS256"; typ: "JWT"}}
// Define the payload (the data carried by the token)
$claims.payload:={sub: "123456789"; name: "John"; exp : 50}

// Generate the JWT token using the claims and a private key
// The resulting token ($token) will be a signed string that can be sent securely
var $token := cs.NetKit.JWT.new().generate($claims; $privateKey)

So erhalten Sie ein signiertes Token, mit dem Sie Ihren Datenaustausch sichern können.

Schlussfolgerung

Die Klasse NetKit. JWT bietet 4D 21 eine einfache API zur Dekodierung, Validierung und Erzeugung von Token. Sie hilft Entwicklern bei der Implementierung sicherer Authentifizierungsabläufe, der Integration mit OpenID-Anbietern und der Erstellung moderner, standardbasierter Anwendungen.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.