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;
