Cliente JWT en Delphi

· Componentes

Desde sgcWebSockets 4.4.8 JWT es compatible con los componentes cliente como WebSocket Cliente y HTTP/2 Cliente.

El componente TsgcHTTP_JWT_Client permite codificar y firmar tokens JWT; al adjuntarlo a un WebSocket Cliente o HTTP/2 cliente, el token se enviará automáticamente como una cabecera Authorization Bearer Token.


Configuración 

 Puedes configurar los valores JWT en las propiedades JWTOptions; hay 2 propiedades principales: Header y Payload; basta con establecer los valores para cada propiedad necesaria.

Si la firma se cifra usando una clave privada (algoritmos RS y ES), establece el valor en la propiedad PrivateKey del algoritmo.

Si la firma se cifra usando un secreto (algoritmos HS), establece el valor en la propiedad Secret del algoritmo.

Cabeceras personalizadas 

Las propiedades Header y Payload contienen las cabeceras más comunes usadas para generar un JWT, pero puedes añadir más cabeceras llamando al método AddKeyValue y pasando la Key y el Value como parámetros.

Ejemplo: si quieres añadir un nuevo registro en el Header del JWT con tu nombre, usa el siguiente método

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

Tras configurar las propiedades, para generar el JWT basta con llamar al método Sign y devolverá el valor del JWT.

WebSocket Cliente y JWT 

TsgcWebSocketClient permite el uso de JWT al conectarse a servidores WebSocket; basta con crear un nuevo cliente JWT y asignarlo a la propiedad 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;