TsgcHTTP_JWT_Server

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 秒です。許容なしでクレームを比較するにはゼロを設定してください。

リファレンス