TsgcHTTP_JWT_Server コンポーネント。
TsgcHTTP_JWT_Server コンポーネントを使用すると、WebSocket プロトコルを使用する際は WebSocket ハンドシェイクで、HTTP プロトコルを使用する際は HTTP ヘッダーとして受信した JWT トークンをデコードおよび検証できます。
コンポーネントの 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 秒です。許容なしでクレームを比較するにはゼロを設定してください。