Da sgcWebSockets 4.4.8 JWT è supportato sui componenti client come WebSocket Client e HTTP/2 Client.
Il componente TsgcHTTP_JWT_Client permette di codificare e firmare token JWT, collegato a un WebSocket Client o client HTTP/2, il token verrà inviato automaticamente come header Authorization Bearer Token.
Configurazione
Puoi configurare i valori JWT nelle proprietà JWTOptions, ci sono 2 proprietà principali: Header e Payload, basta impostare i valori per ogni proprietà richiesta.
Se la firma è cifrata usando una chiave privata (algoritmi RS ed ES), imposta il valore nella proprietà PrivateKey dell'algoritmo.
Se la firma è cifrata usando un Secret (algoritmi HS), imposta il valore nella proprietà Secret dell'algoritmo.
Header personalizzati
Le proprietà Header e Payload contengono gli header più comuni usati per generare un JWT, ma puoi aggiungere altri header chiamando il metodo AddKeyValue e passando Key e Value come parametri.
Esempio: se vuoi aggiungere un nuovo record nell'header JWT con il tuo nome, usa il seguente metodo
Header.AddKeyValue('name', 'John Smith');
Dopo aver configurato le proprietà, per generare il JWT, basta chiamare il metodo Sign che restituirà il valore del JWT.
WebSocket Client e JWT
TsgcWebSocketClient permette l'uso di JWT durante la connessione ai server WebSocket, basta creare un nuovo client JWT e assegnarlo alla proprietà 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;
