sgcAuth: Delphi、C++ Builder 向け OAuth2、JWT & WebAuthn コンポーネント
単体で完結する製品 OAuth2, JWT & WebAuthn

sgcAuth: Delphi & C++ Builder 向け OAuth2, JWT & WebAuthn コンポーネント

2 つのクライアントコンポーネントが、最新の認証におけるトークンまわりの処理をアプリケーションに持ち込みます。TsgcHTTP_OAuth2_Client は、任意の OAuth2/OIDC プロバイダーに対して Authorization Code、PKCE、Client Credentials、Resource Owner Password、Device Code の各グラントを実行します。TsgcHTTP_JWT_Client は JSON Web Token を構築・署名・検証し、単体でも、WebSocket や HTTP クライアントの Bearer トークン供給源としても機能します。sgcAuth は単体で完結しており、両クライアントの土台となる sgcWebSockets Core ランタイムを同梱しています。

完全なソースコード
Delphi 7 から 13 & C++ Builder
同梱ランタイム sgcWebSockets Core 両クライアントの土台となる HTTP、TLS、JSON ランタイム
OAuth2 TsgcHTTP_OAuth2_Client
JWT TsgcHTTP_JWT_Client
2 クライアントコンポーネント コンポーネントパレットの 1 ページに集約
9 対応 RFC OAuth2、PKCE、DPoP、デバイスコード、JWT/JWS/JWE など
5 対応プラットフォーム Windows、macOS、Linux、iOS、Android
100% ソースコード同梱 両クライアントと同梱の Core ランタイム
12 か月のアップデート ライセンスが有効な間に公開されるすべてのリリース

最初に知っておきたい 3 点

sgcAuth が求めるもの、これらのコンポーネントをすでにお持ちかどうか、そして WebAuthn がさらに必要とするものです。3 つとも答えは短くまとまります。

sgcAuth は単体で完結しています

単体で完結しており、sgcWebSockets Core ランタイムが含まれています。両コンポーネントがトークンリクエストを POST する HTTP/TLS クライアントスタックと、レスポンスを解析する JSON 機構です。SKU も 1 つ、インストーラーも 1 つです。

すべてのライセンスに完全なソースコードが付属するため、両クライアントとその土台となるランタイムは、バイナリの中に消えることなく、自分のデバッガでステップ実行できます。

エディションの重複

お使いの sgcWebSockets エディションにすでに含まれていませんか?

OAuth2 クライアントと JWT クライアントは、いずれも sgcWebSockets の Standard エディション以上に含まれているため、お使いの sgcWebSockets エディションが何であれ、両コンポーネントはすでに手元にあります。All-Access にはすべてが含まれます。

sgcAuth はその逆のケースのために存在します。sgcWebSockets の完全なエディションをライセンスすることなく、Delphi や C++ Builder で OAuth2 と JWT のクライアント機能を使いたい場合です。購入前に、お使いのエディションがすでにカバーしている範囲をご確認ください。

アドオンが必要

WebAuthn には sgcCustomIndy が必要です

WebAuthn によるパスワードレスサインインは TsgcWSAPIServer_WebAuthn が提供します。これは sgcWebSockets Enterprise/All-Access のコンポーネントで、sgcCustomIndy がアドオンとして提供するパッチ済み Indy ライブラリの上に構築されています。WebAuthn には sgcCustomIndy アドオンが必要で、sgcAuth を注文すると自動的に追加されます。

すでに sgcCustomIndy のライセンスをお持ちですか? チェックアウト前にカートから自動追加された項目を削除してください。どちらの場合も追加料金は発生しません。

2 つのクライアントで、トークンのライフサイクルすべてに対応

いずれもフォームに配置するか、コードで生成する非ビジュアルコンポーネントで、sgc ユニットプレフィックスの下で宣言され、SGC Auth パレットページに登録されます。プロバイダーの詳細を設定し、イベントを接続してから、Start を呼び出します。

OAuth21 コンポーネント

5 つのグラントタイプを 1 つのコンポーネントで

TsgcHTTP_OAuth2_ClientOAuth2Options.GrantType を通じて、信頼できるサーバーサイドアプリ向けの auth2Code、ネイティブ・モバイル・シングルページアプリ向けの auth2CodePKCE、デーモンやサービスアカウント向けの auth2ClientCredentialsauth2ResourceOwnerPassword、そしてスマート TV やキオスクなど入力に制約のあるデバイス向けの auth2DeviceCode(RFC 8628)を駆動します。AuthorizationServerOptions にプロバイダーの authorize、token、revocation、introspection の各エンドポイントを設定すれば、あとはコンポーネントが処理します。Active/Start が Authorization Code フローを実行すると、システムブラウザを開き、LocalServerOptions からリダイレクトを受け取る小さなローカル HTTP サーバーを立ち上げ、HTTPClientOptions を通じて素の HTTPS でコードをトークンに交換します。その後のトークンのライフサイクルは RefreshRevokeIntrospect がカバーし、DPoPOptionsGenerateDPoPKeyPair が、それを要求するプロバイダー向けに DPoP プルーフオブポゼッション(RFC 9449)を追加します。Google と Microsoft の既製プリセットが、共通のエンドポイントとスコープをあらかじめ設定します。

TsgcHTTP_OAuth2_Client RFC 6749 · PKCE · Device Code · DPoP
JWT1 コンポーネント

署名、アタッチ、検証。選ぶのはあなた次第

TsgcHTTP_JWT_ClientJWTOptions を通じて、RFC 7519 が必要とするすべてを公開します。JOSE Header(algtypkid)、登録済みの Payload クレーム(isssubaudexpnbfiatjti、さらに AddKeyValue によるカスタムクレーム)、そして Algorithms 配下の鍵素材、HMAC(HS.Secret)、RSA(RS.PrivateKey)、ECDSA(ES.PrivateKey)です。Sign を呼び出せば、コンパクトシリアライズされたトークンをその場で取得できます。組み込みの HTTP や WebSocket クライアントを持たないサービスに便利です。あるいは RefreshTokenAfter を設定すれば、コンポーネントが iat/exp を自動的に更新して再署名します。同じコンポーネントは TsgcWebSocketClientTsgcHTTP1ClientTsgcHTTP2ClientAuthentication.Token.JWT にそのまま接続できるため、ヘッダーを自分で操作しなくても、送信するすべてのリクエストに新しい Bearer トークンが付与されます。

TsgcHTTP_JWT_Client RFC 7519 · JWS · JWE

Delphi コードから行う認証フロー

どちらのコンポーネントも普通の非ビジュアルコンポーネントなので、VCL デスクトップアプリ、Windows サービス、Linux デーモンなど、すでにあるアプリケーションにそのまま組み込めます。以下は実際にお客様が構築しているパターンで、それぞれを駆動するプロパティやメソッドに対応付けています。

Google または Microsoft でサインイン auth2CodePKCE

Google と Microsoft の既製プリセットが、authorize と token のエンドポイントおよびスコープをあらかじめ設定します。

サーバー間の API アクセス auth2ClientCredentials

バックグラウンドジョブとサービスアカウントが、ユーザーを介さずに API に対して認証を行います。

スマート TV、キオスク & IoT デバイス auth2DeviceCode

デバイスに短いコードを表示し、ユーザーはスマートフォンやノート PC でサインインを完了します。

再認証なしで長時間のセッションを維持 Refresh

裏側でリフレッシュトークンを新しいアクセストークンに交換します。ブラウザへの受け渡しは不要です。

自前の WebSocket & HTTP API を認証 Authentication.Token.JWT

JWT クライアントが、TsgcWebSocketClient、TsgcHTTP1Client、TsgcHTTP2Client 向けの Bearer トークンを自動的に署名します。

単体でのトークン署名 Sign

WebSocket や HTTP コンポーネントなしで、任意のコードベース向けに JWT 文字列を構築・署名します。

ブラウザへの受け渡し、署名、そして同梱ランタイム

OAuth2 と JWT は異なる問題を解決します。一方はリモートサーバーとトークンを交渉し、もう一方はローカルで署名します。だからこそ両方を 1 つにまとめる意味があります。sgcAuth はその違いを同じコンポーネント規約の裏に隠し、同梱の sgcWebSockets Core ランタイムが土台の配管を担います。

OAuth2 はブラウザへの受け渡し、その後は素の HTTPS です

Start はシステムブラウザを開き(Device Code の場合は、表示すべきユーザーコードを渡します)、LocalServerOptions によるローカル HTTP リスナーが認可のリダイレクトを受け取ります。アクセストークンの交換は、Core ランタイムの HTTP クライアントスタック上で HTTPClientOptions を通じて発行される、素の HTTPS POST です。

JWT は通信ではなく署名です

TsgcHTTP_JWT_Client はソケットを一切開きません。JWTOptions がヘッダー、ペイロード、鍵素材を設定し、Sign が HMAC、RSA、ECDSA いずれかのコンパクトシリアライズされたトークンを返します。自分のコードが送信する任意のリクエストにそのままアタッチできます。

Core ランタイムは箱の中に入っています

単体で完結しており、sgcWebSockets Core ランタイムが含まれています。両コンポーネントが POST する HTTP/TLS クライアントスタックと、レスポンスを読み取る JSON パーサーを提供し、その完全なソースコードも他のすべてと同様にパッケージの一部です。

WebAuthn は sgcCustomIndy を介した 3 つ目のピースです

パスワードレスサインインは TsgcWSAPIServer_WebAuthn が処理します。これは sgcWebSockets Enterprise/All-Access のサーバーコンポーネントで、sgcCustomIndy が提供するパッチ済み Indy ビルドを必要とします。sgcAuth を注文すると、sgcCustomIndy が自動的にカートに追加されます。

トークンを取得し、トークンに署名する

どちらのコンポーネントも同じ形に従います。オプションを設定してから、メソッドを呼び出します。Delphi 7 から 13、そして C++ Builder でコンパイルでき、.NET でも同じプロパティが公開されています。

uses
  sgcHTTP_OAuth2_Client, sgcHTTP_JWT_Client;

var
  OAuth2: TsgcHTTP_OAuth2_Client;
  JWT: TsgcHTTP_JWT_Client;
begin
  // OAuth2: Authorization Code Grant with PKCE
  OAuth2 := TsgcHTTP_OAuth2_Client.Create(nil);
  OAuth2.OAuth2Options.GrantType := auth2CodePKCE;
  OAuth2.OAuth2Options.ClientId := 'your-client-id';
  OAuth2.AuthorizationServerOptions.AuthURL := 'https://provider.com/oauth2/authorize';
  OAuth2.AuthorizationServerOptions.TokenURL := 'https://provider.com/oauth2/token';
  OAuth2.AuthorizationServerOptions.Scope.Text := 'openid profile';
  OAuth2.LocalServerOptions.IP := '127.0.0.1';
  OAuth2.LocalServerOptions.Port := 8080;
  OAuth2.OnAfterAccessToken := OAuth2AccessToken;
  OAuth2.Start;   // opens the browser; the redirect lands on the local server

  // JWT: sign a token for your own API
  JWT := TsgcHTTP_JWT_Client.Create(nil);
  JWT.JWTOptions.Header.alg := jwtHS256;
  JWT.JWTOptions.Algorithms.HS.Secret := '79F66F1E-E998-436B-8A0A-3E5DEFA4FD9E';
  JWT.JWTOptions.Payload.iss := 'your-service';
  JWT.JWTOptions.Payload.sub := '1234567890';
  JWT.JWTOptions.Payload.iat := DateTimeToUnix(Now);
  ShowMessage(JWT.Sign);
end;

procedure TForm1.OAuth2AccessToken(Sender: TObject);
begin
  Memo1.Lines.Add('Access token received.');
end;

同じ JWT コンポーネントは、WebSocket や HTTP クライアントに直接アタッチできます。Client.Authentication.Token.Enabled := TrueClient.Authentication.Token.JWT := JWT を設定すれば、送信するすべてのリクエストに新しい Bearer トークンが付与されます。

// include: sgcHTTP_OAuth2_Client.hpp, sgcHTTP_JWT_Client.hpp

// OAuth2: Authorization Code Grant with PKCE
TsgcHTTP_OAuth2_Client *OAuth2 = new TsgcHTTP_OAuth2_Client(this);
OAuth2->OAuth2Options->GrantType = auth2CodePKCE;
OAuth2->OAuth2Options->ClientId = "your-client-id";
OAuth2->AuthorizationServerOptions->AuthURL = "https://provider.com/oauth2/authorize";
OAuth2->AuthorizationServerOptions->TokenURL = "https://provider.com/oauth2/token";
OAuth2->AuthorizationServerOptions->Scope->Text = "openid profile";
OAuth2->LocalServerOptions->IP = "127.0.0.1";
OAuth2->LocalServerOptions->Port = 8080;
OAuth2->OnAfterAccessToken = OAuth2AccessToken;
OAuth2->Start();   // opens the browser; the redirect lands on the local server

// JWT: sign a token for your own API
TsgcHTTP_JWT_Client *JWT = new TsgcHTTP_JWT_Client(this);
JWT->JWTOptions->Header->alg = jwtHS256;
JWT->JWTOptions->Algorithms->HS->Secret = "79F66F1E-E998-436B-8A0A-3E5DEFA4FD9E";
JWT->JWTOptions->Payload->iss = "your-service";
JWT->JWTOptions->Payload->sub = "1234567890";
JWT->JWTOptions->Payload->iat = DateTimeToUnix(Now());
ShowMessage(JWT->Sign());

void __fastcall TForm1::OAuth2AccessToken(TObject *Sender)
{
  Memo1->Lines->Add("Access token received.");
}

同じ JWT コンポーネントは、WebSocket や HTTP クライアントに直接アタッチできます。Client->Authentication->Token->Enabled = trueClient->Authentication->Token->JWT = JWT を設定すれば、送信するすべてのリクエストに新しい Bearer トークンが付与されます。

純粋な HTTPS と署名処理、ネイティブライブラリは不要

どちらのコンポーネントも、Core ランタイムの HTTP クライアントスタックとプラットフォームの暗号プリミティブ以外には依存しないため、Delphi が動作する場所であればどこでもコンパイルして実行できます。

TsgcHTTP_OAuth2_Client Authorization Code、PKCE、Client Credentials、Resource Owner Password、Device Code
Windows Win32 Windows Win64 Linux64 macOS iOS Android
TsgcHTTP_JWT_Client HS256/384/512, RS256/384/512, ES256/384/512
Windows Win32 Windows Win64 Linux64 macOS iOS Android
IDE 対応 ソースツリーは 1 つで、設計時パッケージはバージョンごとに用意されています
Delphi 7 から 13 C++ Builder
体験版インストーラー sgcWebSockets All-Access の体験版には Auth コンポーネントが含まれています
1 つのダウンロードで両方のコンポーネント

体験版インストーラーをダウンロード →

単体で完結するパッケージ

sgcAuth は単体でライセンスされ、開発者 1 名向けの €149 から始められます。すべてのライセンスに、完全なソースコード、1 年間のアップデート、更新時 50% から 70% の割引が含まれます。パック 1 つの更新で 50%、2 つで 60%、3 つ以上で 70% になります。sgcAI、sgcMQ、sgcSocial、sgcCustomIndy、sgcAuth、sgcHTTP はそれぞれ 1 パックとして数えます。

sgcAuth

€149

Single、Team、Site の各ライセンスをご用意しています。

  • OAuth2 クライアント: Authorization Code、PKCE、Client Credentials、Device Code
  • トークンの発行・署名・検証を行う JWT クライアント
  • sgcCustomIndy 経由の WebAuthn パスキー(自動追加)
  • sgcWebSockets Core ランタイムを同梱
  • Delphi 7 から 13 & C++ Builder
  • 完全なソースコード
  • 1 年間のアップデート

sgcAuth には sgcWebSockets Core ランタイムが含まれるため、OAuth2 と JWT のクライアントについて他に購入するものはありません。

購入手続きには 2 つの項目が表示されます。金額 0 で計上される sgcWebSockets Core ランタイムの利用権と、sgcAuth パック本体です。WebAuthn 用に sgcCustomIndy が自動的に追加されます。すでにライセンスをお持ちの場合は削除してください。価格の詳細はこちら

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

トークンライブラリではなく、認証機能を届ける

ネイティブな Delphi と C++ Builder のコードから OAuth2 と JWT を扱えます。ランタイムを同梱し、完全なソースコードも同梱済みです。All-Access の体験版インストーラーをダウンロードして、今日にも両方のコンポーネントをフォームに配置してみてください。

eSeGeCe のその他の製品

sgcAuth と、Delphi、C++ Builder、.NET 向けの他のコンポーネントライブラリを組み合わせてご利用いただけます。

sgcWebSockets

フルライブラリです。WebSocket のクライアントとサーバー、HTTP/2、IoT、P2P、AI の各コンポーネントを収録しています。そのエディションには OAuth2 と JWT のクライアントも含まれています。

詳しく見る →

sgcCustomIndy

sgcWebSockets Enterprise の土台となるカスタム Indy ライブラリを、アドオンとして提供します。WebAuthn に必須で、sgcAuth の注文に自動的に追加されます。

詳しく見る →

sgcAI

AI、LLM、MCP のコンポーネントです。1 つのチャットコンポーネントで OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok、Mistral に接続できます。

詳しく見る →

sgcMQ

ネイティブな MQTT 3.1.1/5.0、AMQP 0.9.1、AMQP 1.0、Apache Kafka、STOMP のクライアントコンポーネントで、Core ランタイムを同梱しています。

詳しく見る →

sgcSocial

WhatsApp Business Cloud API と Telegram TDLib のクライアントコンポーネントで、Core ランタイムを同梱しています。

詳しく見る →

sgcHTML

Delphi、C++ Builder、.NET 向けの、データ連携サーバーサイド HTML/UI コンポーネントです。Bootstrap 5 と htmx に対応し、WebAuthn ログイン UI コンポーネントも含みます。

詳しく見る →