JWT Server

サーバーサイドの JWT 検証コンポーネントです。TsgcHTTP_JWT_Server を TsgcWebSocketHTTPServer に組み込み、リクエストをディスパッチする前に Authorization ベアラートークンを検証できます。

TsgcHTTP_JWT_Server

署名鍵(HMAC、RSA、ECDSA、EdDSA)を使用して受信 JWT を検証し、exp/nbf/aud/iss クレームを確認し、不一致のトークンをアプリケーション層向けの型付きイベントで拒否します。

コンポーネントクラス

TsgcHTTP_JWT_Server

プロトコル

RFC 7519 (JWT)

対応プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Enterprise

配置してサーバーに接続し、すべてのリクエストで検証する

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.IssuerVerify.AudienceVerify.SubjectVerify.NotBeforeVerify.ExpirationTime はすべて、デフォルトで受信ペイロードに対して検証されます。

JWKS エンドポイント

発行者の JWKS エンドポイントに JWTOptions.JWKS.URL を指定すると、コンポーネントが公開鍵を取得してキャッシュし、各トークンヘッダーの JWK kid に基づいてローテーションします。

失敗時イベント

OnAuthError は拒否理由(署名の不一致、有効期限切れ、オーディエンスの不一致)を公開します。401 を返すかフォールバックするかはアプリケーションが決定します。

WebSocket フック

TsgcWebSocketServer にも対応しています。WebSocket アップグレード時に Authorization ヘッダーが送信され、OnConnect が発火する前に JWT サーバーが検証します。

JWE サポート

暗号化された JWE トークンは、設定された秘密鍵(RSA-OAEP、ECDH-ES 鍵ラップ、AES-CBC / AES-GCM コンテンツ暗号化)を使用してインラインでデコードおよび検証されます。

仕様・参考資料

このコンポーネントが実装する標準規格の公式ソースです。

ドキュメント・デモ

コンポーネントリファレンスへの直接リンク、すぐに実行できるデモプロジェクトの入手、体験版のダウンロードができます。

オンラインヘルプ — TsgcHTTP_JWT_Server このコンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — Demos\20.HTTP_Protocol\05.JWT すぐに実行できるサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。以下から体験版をダウンロードできます。
技術ドキュメント (PDF) このコンポーネントの機能、クイックスタート、Delphi および C++ Builder 向けのコードサンプル、一次資料のリファレンスを掲載しています。
ユーザーマニュアル (PDF) ライブラリのすべてのコンポーネントを網羅した総合マニュアルです。

サーバーサイドで JWT を検証しませんか?

体験版をダウンロードして、Delphi サーバーに JWT 検証を追加してください。