自 sgcWebSockets 4.4.8 起,WebSocket 客户端和 HTTP/2 客户端等客户端组件均支持 JWT。
TsgcHTTP_JWT_Client 组件允许对 JWT 令牌进行编码和签名,可附加到 WebSocket 客户端或 HTTP/2 客户端,令牌将自动作为 Authorization Bearer Token 请求头发送。
配置
您可以在 JWTOptions 属性中配置 JWT 值,主要包含两个属性:Header 和 Payload,为每个必填属性设置相应值即可。
若签名使用私钥加密(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;
