JWT Delphi 客户端

· 组件

sgcWebSockets 4.4.8 起,WebSocket 客户端和 HTTP/2 客户端等客户端组件均支持 JWT。

TsgcHTTP_JWT_Client 组件允许对 JWT 令牌进行编码和签名,可附加到 WebSocket 客户端HTTP/2 客户端,令牌将自动作为 Authorization Bearer Token 请求头发送。


配置

您可以在 JWTOptions 属性中配置 JWT 值,主要包含两个属性:HeaderPayload,为每个必填属性设置相应值即可。

若签名使用私钥加密(RS 和 ES 算法),请在算法的 PrivateKey 属性中设置值。

若签名使用密钥加密(HS 算法),请在算法的 Secret 属性中设置值。

自定义请求头

Header 和 Payload 属性包含生成 JWT 最常用的请求头,但您也可以通过调用 AddKeyValue 方法并传入键和值作为参数来添加更多请求头。

示例:若要在 JWT Header 中添加包含您姓名的新记录,请使用以下方法:

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

配置好属性后,调用 Sign 方法即可生成 JWT 并返回其值。

WebSocket 客户端与 JWT

TsgcWebSocketClient 允许在连接 WebSocket 服务器时使用 JWT,只需创建一个新的 JWT 客户端并将其分配给 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;