JWT 服务器
服务器端 JWT 验证。将 TsgcHTTP_JWT_Server 接入 TsgcWebSocketHTTPServer,在分发请求前验证 Authorization Bearer 令牌。
服务器端 JWT 验证。将 TsgcHTTP_JWT_Server 接入 TsgcWebSocketHTTPServer,在分发请求前验证 Authorization Bearer 令牌。
针对您的签署密钥(HMAC、RSA、ECDSA、EdDSA)验证传入 JWT,检查 exp/nbf/aud/iss 声明,并通过应用层类型化事件拒绝不匹配的令牌。
拖放 TsgcHTTP_JWT_Server,配置验证密钥(或 JWKS URL)并附加到 TsgcWebSocketHTTPServer.JWT — 所有传入请求都会自动验证。
uses
sgcWebSocket, sgcHTTP;
var
Server: TsgcWebSocketHTTPServer;
JWT: TsgcHTTP_JWT_Server;
begin
JWT := TsgcHTTP_JWT_Server.Create(nil);
JWT.JWTOptions.Algorithms.HS.Secret := 'shared-secret';
JWT.JWTOptions.Verify.Issuer := 'auth.example.com';
JWT.JWTOptions.Verify.Audience := 'api.example.com';
Server := TsgcWebSocketHTTPServer.Create(nil);
Server.Port := 8443;
Server.SSL := True;
Server.Authentication.JWT.Enabled := True;
Server.Authentication.JWT.Server := JWT;
Server.Active := True;
end;
// uses: sgcWebSocket, sgcHTTP
TsgcHTTP_JWT_Server *JWT = new TsgcHTTP_JWT_Server(this);
JWT->JWTOptions->Algorithms->HS->Secret = "shared-secret";
TsgcWebSocketHTTPServer *Server = new TsgcWebSocketHTTPServer(this);
Server->Authentication->JWT->Enabled = true;
Server->Authentication->JWT->Server = JWT;
Server->Active = true;
直接与 TsgcWebSocketHTTPServer 和 TsgcWebSocketServer 身份验证集成的服务器端 JWT 验证器。
支持 HS256/384/512、RS256/384/512、ES256/384/512、PS256/384/512 和 EdDSA。可加载多个密钥(按 kid 索引)以实现密钥轮换。
Verify.Issuer、Verify.Audience、Verify.Subject、Verify.NotBefore、Verify.ExpirationTime 默认均针对传入载荷执行。
将 JWTOptions.JWKS.URL 指向颁发者 JWKS 端点 — 组件获取公钥,缓存并按每个令牌标头中的 JWK kid 轮换。
OnAuthError 公开拒绝原因(签名不匹配、已过期、受众不匹配);您的应用程序决定是返回 401 还是回退。
也适用于 TsgcWebSocketServer — WebSocket 升级携带 Authorization 标头,JWT 服务器在 OnConnect 触发前进行验证。
使用已配置的私钥内联解码和验证加密的 JWE 令牌(RSA-OAEP、ECDH-ES 密钥包装;AES-CBC / AES-GCM 内容加密)。