JWT Client

Delphi/C++Builder から JSON Web Token の生成、署名、検証ができます。HMAC、RSA、ECDSA 署名、PASETO スタイルの暗号化 JWE、自動リフレッシュ、TsgcHTTP2Client / TsgcHTTPComponentClient との簡単な統合を提供します。

TsgcHTTP_JWT_Client

HS256/HS384/HS512、RS256/RS384/RS512、ES256/ES384、EdDSA トークンの署名、受信 JWT のデコード、期限切れ前の自動リフレッシュができます。Authentication.Token.JWT で HTTP および HTTP/2 クライアントと組み合わせて使用できます。

コンポーネントクラス

TsgcHTTP_JWT_Client

プロトコル

RFC 7519 (JWT)

対応プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Professional / Enterprise

ヘッダー + ペイロードを設定し、署名して添付する

Header.alg、Payload.iss / iat / exp を設定し、署名キーを読み込んだ後、JWT クライアントをベアラートークンソースとして HTTP / HTTP/2 / WebSocket コンポーネントに添付してください。

uses
  sgcHTTP, sgcBase_Helpers;

var
  JWT: TsgcHTTP_JWT_Client;
begin
  JWT := TsgcHTTP_JWT_Client.Create(nil);
  JWT.JWTOptions.Header.alg := jwtES256;
  JWT.JWTOptions.Header.kid := 'apple-key-id';
  JWT.JWTOptions.Payload.iss := 'team-id';
  JWT.JWTOptions.Payload.iat := StrToInt64(GetDateTimeUnix(Now, False));
  JWT.JWTOptions.Algorithms.ES.PrivateKey.LoadFromFile('AuthKey_XXX.p8');
  JWT.JWTOptions.RefreshTokenAfter := 40 * 60; // auto-mint every 40 min

  ShowMessage(JWT.Token);
end;
// uses: sgcHTTP
TsgcHTTP_JWT_Client *JWT = new TsgcHTTP_JWT_Client(this);
JWT->JWTOptions->Header->alg = jwtES256;
JWT->JWTOptions->Header->kid = "apple-key-id";
JWT->JWTOptions->Payload->iss = "team-id";
JWT->JWTOptions->Algorithms->ES->PrivateKey->LoadFromFile("AuthKey_XXX.p8");

ShowMessage(JWT->Token);

主な機能

HMAC、RSA、ECDSA、EdDSA 署名を持つ型付き JWT 生成・検証コンポーネントです。自動リフレッシュと HTTP / HTTP/2 / WebSocket コンポーネントへのクリーンな引き渡しを提供します。

アルゴリズム

JWTOptions.Header.alg で HS256/384/512、RS256/384/512、ES256/384/512、PS256/384/512 または EdDSA を選択します。キーは PEM、P8 またはメモリストリームから読み込みます。

標準クレーム

JWTOptions.Payload.isssubaudexpnbfiatjti は RFC 7519 に準拠した型付きプロパティです。ベンダー拡張のための自由形式の CustomClaims も提供します。

自動リフレッシュ

RefreshTokenAfter は N 秒後に新しい JWT を生成するようにコンポーネントに指示します。Apple が 1 時間以内のローテーションを期待する APNs ES256 トークンに役立ちます。

デコード & 検証

Decode(token) は受信した JWT を解析し、設定されたキーに対して署名を検証します。OnVerify は成功/失敗と解析済みペイロードとともに発火します。

JWE サポート

RFC 7516 に基づく暗号化 JWT(JWE)をサポートしています。AES-CBC、AES-GCM、RSA-OAEP、ECDH-ES のキーラッピングに対応しています。

HTTP/2 への簡単統合

Authentication.Token.JWT を設定することで TsgcHTTP2Client または TsgcHTTPComponentClient と組み合わせて使用できます。すべての送信リクエストに新しく署名されたベアラートークンが付与されます。

仕様・参考資料

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

ドキュメント・デモ

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

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

署名済み JWT の生成を始めてみませんか?

体験版をダウンロードして、Delphi アプリケーションに JWT 署名を追加してください。