JWT 客户端
从 Delphi/C++Builder 生成、签署和验证 JSON Web Token。HMAC、RSA 和 ECDSA 签名,PASETO 风格加密 JWE,自动刷新,轻松集成 TsgcHTTP2Client / TsgcHTTPComponentClient。
从 Delphi/C++Builder 生成、签署和验证 JSON Web Token。HMAC、RSA 和 ECDSA 签名,PASETO 风格加密 JWE,自动刷新,轻松集成 TsgcHTTP2Client / TsgcHTTPComponentClient。
签署 HS256/HS384/HS512、RS256/RS384/RS512、ES256/ES384、EdDSA 令牌;解码传入 JWT;临近过期时自动刷新;通过 Authentication.Token.JWT 与 HTTP 和 HTTP/2 客户端配合使用。
TsgcHTTP_JWT_Client
Windows, macOS, Linux, iOS, Android
Professional / Enterprise
设置 Header.alg、Payload.iss / iat / exp,加载签署密钥,然后将 JWT 客户端作为持票人令牌源附加到 HTTP / HTTP/2 / WebSocket 组件。
uses
sgcHTTP, sgcBase_Helpers;
var
JWT: TsgcHTTP_JWT_Client;
begin
JWT := TsgcHTTP_JWT_Client.Create(nil);
JWT.JWTOptions.Header.alg := jwtES256;
JWT.JWTOptions.Header.kid := 'apple-key-id';
JWT.JWTOptions.Payload.iss := 'team-id';
JWT.JWTOptions.Payload.iat := StrToInt64(GetDateTimeUnix(Now, False));
JWT.JWTOptions.Algorithms.ES.PrivateKey.LoadFromFile('AuthKey_XXX.p8');
JWT.JWTOptions.RefreshTokenAfter := 40 * 60; // auto-mint every 40 min
ShowMessage(JWT.Token);
end;
// uses: sgcHTTP
TsgcHTTP_JWT_Client *JWT = new TsgcHTTP_JWT_Client(this);
JWT->JWTOptions->Header->alg = jwtES256;
JWT->JWTOptions->Header->kid = "apple-key-id";
JWT->JWTOptions->Payload->iss = "team-id";
JWT->JWTOptions->Algorithms->ES->PrivateKey->LoadFromFile("AuthKey_XXX.p8");
ShowMessage(JWT->Token);
类型化的 JWT 生成与验证组件,支持 HMAC、RSA、ECDSA 和 EdDSA 签名,自动刷新,并与 HTTP / HTTP/2 / WebSocket 组件无缝集成。
JWTOptions.Header.alg 选择 HS256/384/512、RS256/384/512、ES256/384/512、PS256/384/512 或 EdDSA。密钥从 PEM、P8 或内存流加载。
JWTOptions.Payload.iss、sub、aud、exp、nbf、iat、jti 是与 RFC 7519 对应的类型化属性 — 另加用于厂商扩展的自由格式 CustomClaims。
RefreshTokenAfter 指示组件在 N 秒后生成新 JWT — 适用于 Apple 要求在一小时内轮换的 APNs ES256 令牌。
Decode(token) 解析传入 JWT 并针对已配置密钥验证签名;OnVerify 以成功/失败和已解析载荷触发。
支持符合 RFC 7516 的加密 JWT(JWE):AES-CBC、AES-GCM、RSA-OAEP 和 ECDH-ES 密钥包装。
通过设置 Authentication.Token.JWT 与 TsgcHTTP2Client 或 TsgcHTTPComponentClient 配合使用 — 每个出站请求都会获得新鲜的已签署持票人令牌。