JWT Delphi Client

· Composants

Depuis sgcWebSockets 4.4.8, JWT est pris en charge sur les composants clients comme WebSocket Client et HTTP/2 Client.

Le composant TsgcHTTP_JWT_Client permet d'encoder et de signer des jetons JWT : attaché à un client WebSocket ou à un client HTTP/2, le jeton sera envoyé automatiquement sous forme d'en-tête Authorization Bearer Token.


Configuration 

 Tu peux configurer les valeurs JWT dans les propriétés JWTOptions. Il y a 2 propriétés principales : Header et Payload : définis simplement les valeurs pour chaque propriété requise.

Si la signature est chiffrée avec une clé privée (algorithmes RS et ES), définis la valeur dans la propriété PrivateKey de l'algorithme.

Si la signature est chiffrée avec un secret (algorithmes HS), définis la valeur dans la propriété Secret de l'algorithme.

En-têtes personnalisés 

Les propriétés Header et Payload contiennent les en-têtes les plus courants utilisés pour générer un JWT, mais tu peux ajouter d'autres en-têtes en appelant la méthode AddKeyValue et en passant la clé et la valeur en paramètres.

Exemple : si tu veux ajouter un nouvel enregistrement dans l'en-tête JWT avec ton nom, utilise la méthode suivante

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

Après avoir configuré les propriétés, pour générer le JWT, appelle simplement la méthode Sign qui retournera la valeur du JWT.

Client WebSocket et JWT 

TsgcWebSocketClient permet l'utilisation de JWT lors de la connexion aux serveurs WebSocket : crée simplement un nouveau client JWT et assigne-le à la propriété 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;