Cliente JWT para Delphi

· Componentes

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;