A partir do sgcWebSockets 4.4.8, JWT é suportado nos componentes cliente, como WebSocket Client e HTTP/2 Client.
O componente TsgcHTTP_JWT_Client permite codificar e assinar tokens JWT; ao ser vinculado a um WebSocket Client ou a um HTTP/2 client, o token será enviado automaticamente como um Authorization Bearer Token Header.
Configuração
Você pode configurar os valores JWT nas propriedades JWTOptions; existem 2 propriedades principais: Header e Payload — basta definir os valores de cada propriedade obrigatória.
Se a assinatura for criptografada com uma chave privada (algoritmos RS e ES), defina o valor na propriedade PrivateKey do algoritmo.
Se a assinatura for criptografada com um segredo (algoritmos HS), defina o valor na propriedade Secret do algoritmo.
Headers Personalizados
As propriedades Header e Payload contêm os headers mais comuns usados para gerar um JWT, mas você pode adicionar mais headers chamando o método AddKeyValue e passando Key e Value como parâmetros.
Exemplo: se você quiser adicionar um novo registro no Header JWT com o seu nome, use o seguinte método
Header.AddKeyValue('name', 'John Smith');
Após configurar as propriedades, para gerar o JWT basta chamar o método Sign, que retornará o valor do JWT.
WebSocket Client e JWT
TsgcWebSocketClient permite o uso de JWT ao conectar a servidores WebSocket — basta criar um novo cliente JWT e atribuí-lo à propriedade Authentication.Token.JWT.
oClient := TsgcWebSocketClient.Create(nil); oClient.URL := 'wss://www.esegece.com:2053'; 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;
