JWT Delphi-client

· Componenten

Vanaf sgcWebSockets 4.4.8 wordt JWT ondersteund op clientcomponenten zoals WebSocket-client en HTTP/2-client.

Met de component TsgcHTTP_JWT_Client kun je JWT-tokens encoderen en signeren; gekoppeld aan een WebSocket-client of HTTP/2-client wordt het token automatisch verzonden als Authorization Bearer Token-header.


Configuratie 

 De JWT-waarden kun je instellen in de properties van JWTOptions; er zijn 2 hoofdproperties: Header en Payload. Stel daar simpelweg de waarden in voor elke vereiste property.

Als de signature wordt versleuteld met een private key (RS- en ES-algoritmes), stel de waarde dan in op de property PrivateKey van het algoritme.

Als de signature wordt versleuteld met een secret (HS-algoritmes), stel de waarde dan in op de property Secret van het algoritme.

Aangepaste headers 

De Header- en Payload-properties bevatten de meest voorkomende headers die worden gebruikt om een JWT te genereren, maar je kunt meer headers toevoegen door de methode AddKeyValue aan te roepen en Key en Value als parameters mee te geven.

Voorbeeld: wil je een nieuwe regel met je naam toevoegen aan de JWT-header, gebruik dan de volgende methode

Header.AddKeyValue('name', 'John Smith');

Roep na het configureren van de properties de methode Sign aan om de JWT te genereren; deze geeft de waarde van de JWT terug.

WebSocket-client en JWT 

Met TsgcWebSocketClient kun je JWT gebruiken bij het verbinden met WebSocket-servers; maak een nieuwe JWT-client en wijs deze toe aan de property Authentication.Token.JWT.

oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'ws://echo.websocket.org';
oJWT := TsgcHTTP_JWT_Client.Create(nil);
oJWT.Header.alg := jwtRSA256;
oJWT.Payload.sub := '1234567890';
oJWT.Payload.iat := 1516239022;
oClient.Authentication.Enabled := True;
oClient.Authentication.URL.Enabled := False;
oClient.Authentication.Token.Enabled := True;
oClient.Authentication.Token.JWT := oJWT;
oClient.Active := True;