TsgcHTTP_JWT_Server

TsgcHTTP_JWT_Server 组件。

简介

TsgcHTTP_JWT_Server 组件允许您对 JWT 令牌进行解码和验证,令牌可以在使用 WebSocket 协议时通过 WebSocket 握手接收,或在使用 HTTP 协议时作为 HTTP 标头接收。

 

配置

您可以在组件的 JWTOptions 属性中配置以下属性:

 

如果使用公钥(RS 和 ES 算法)验证签名,请在算法的 PublicKey 属性中设置该值。

如果使用密钥(HS 算法)验证签名,请在算法的 Secret 属性中设置值。

 

若要验证 JWT 令牌,只需将 TsgcHTTP_JWT_Server 实例附加到 WebSocket/HTTP 服务器的 Authentication.JWT.JWT 属性即可。

 


    oServer := TsgcWebSocketHTTPServer.Create(nil);
    oServer.Port := 80;
    oJWT := TsgcHTTP_JWT_Server.Create(nil);
    oJWT.JWTOptions.Algorithms.RS.PublicKey.Text := 'public key here';
    oServer.Authorization.Enabled := True;
    oServer.Authorization.JWT.JWT := oJWT;
    oServer.Active := True;

 

声明验证

签名验证通过后,服务器会验证载荷中已注册的声明。系统会检查 exp、nbf 和 iat 声明,早期版本只验证签名,因此已过期的令牌也会被接受。载荷中不存在的声明表示签发者没有对其做出断言,因此不会被验证。

 

这些检查在 JWTOptions.Validations 属性中配置:

 

Expiration:当 exp 声明位于过去时拒绝该令牌。默认启用,设置 Validations.Expiration := False 可禁用过期检查。

NotBefore:当 nbf 声明位于将来时拒绝该令牌。默认启用。

Issued:当 iat 声明位于将来时拒绝该令牌。默认启用。

Leeway:将 exp、nbf 和 iat 声明与当前时间比较时允许的时钟偏差秒数。默认值为 60 秒,设为零则在比较声明时不留任何余量。

参考