Delphi OAuth2 クライアント

OAuth 2.0 / OAuth 2.1 クライアントコンポーネントです。PKCE 付き認可コード、クライアントクレデンシャル、デバイスコード、リフレッシュトークンのローテーション、内蔵ブラウザフローに対応しています。

TsgcHTTP_OAuth2_Client

OAuth 2.0 / 2.1 のクライアントサイドを実装しています。PKCE 付き認可コード、クライアントクレデンシャル、デバイスコード、リフレッシュトークンフローに対応しており、リダイレクト URI 用の小型組み込み HTTP リスナーも含まれています。

コンポーネントクラス

TsgcHTTP_OAuth2_Client

プロトコル

OAuth 2.0 (RFC 6749)

対応プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Standard / Professional / Enterprise

プロバイダーを設定してフローを開始する

ClientId / ClientSecret / スコープ / エンドポイントを設定(または Google / Microsoft / GitHub のプロバイダープリセットを使用)し、Start を呼び出した後、HTTP 呼び出しにトークンを使用してください。

uses
  sgcHTTP, sgcHTTP_OAuth_Types;

// OAuth2 is a form field: OAuth2: TsgcHTTP_OAuth2_Client;
procedure TForm1.Authorize;
begin
  OAuth2 := TsgcHTTP_OAuth2_Client.Create(nil);
  OAuth2.OnAfterAccessToken := OnAfterAccessTokenEvent;

  OAuth2.OAuth2Options.GrantType    := auth2CodePKCE;
  OAuth2.OAuth2Options.ClientId     := 'your-client-id';
  OAuth2.OAuth2Options.ClientSecret := 'your-client-secret';

  OAuth2.AuthorizationServerOptions.AuthURL  := 'https://auth.example.com/authorize';
  OAuth2.AuthorizationServerOptions.TokenURL := 'https://auth.example.com/token';
  OAuth2.AuthorizationServerOptions.Scope.Clear;
  OAuth2.AuthorizationServerOptions.Scope.Add('profile');
  OAuth2.AuthorizationServerOptions.Scope.Add('email');

  OAuth2.LocalServerOptions.IP          := '127.0.0.1';
  OAuth2.LocalServerOptions.Port        := 5555;
  OAuth2.LocalServerOptions.RedirectURL := 'http://localhost:5555/callback';

  // Spawns the user browser at the auth URL and returns immediately
  OAuth2.Start;
end;

// ... the user logs in, the browser is redirected to the callback URL,
// ... the component captures the code and exchanges it for tokens
procedure TForm1.OnAfterAccessTokenEvent(Sender: TObject; const Access_Token,
  Token_Type, Expires_In, Refresh_Token, Scope, RawParams: String;
  var Handled: Boolean);
begin
  ShowMessage(Access_Token);
end;
// uses: sgcHTTP, sgcHTTP_OAuth_Types
TsgcHTTP_OAuth2_Client *OAuth2 = new TsgcHTTP_OAuth2_Client(this);
OAuth2->OnAfterAccessToken = OnAfterAccessTokenEvent;

OAuth2->OAuth2Options->GrantType    = auth2CodePKCE;
OAuth2->OAuth2Options->ClientId     = "your-client-id";
OAuth2->OAuth2Options->ClientSecret = "your-client-secret";

OAuth2->AuthorizationServerOptions->AuthURL  = "https://auth.example.com/authorize";
OAuth2->AuthorizationServerOptions->TokenURL = "https://auth.example.com/token";
OAuth2->AuthorizationServerOptions->Scope->Clear();
OAuth2->AuthorizationServerOptions->Scope->Add("profile");
OAuth2->AuthorizationServerOptions->Scope->Add("email");

OAuth2->LocalServerOptions->IP          = "127.0.0.1";
OAuth2->LocalServerOptions->Port        = 5555;
OAuth2->LocalServerOptions->RedirectURL = "http://localhost:5555/callback";

OAuth2->Start();

主な機能

PKCE、リフレッシュトークンのローテーション、組み込みループバックリダイレクトリスナーを備えた OAuth 2.0 クライアントインターフェースを実装しています。

対応フロー

認可コード(RFC 7636 によるオプションの PKCE 付き)、クライアントクレデンシャル(RFC 6749 §4.4)、デバイスコード(RFC 8628)、リフレッシュトークン(RFC 6749 §6)がすべて型付きメソッドとしてサポートされています。

デフォルトで PKCE を使用

OAuth2Options.GrantTypeauth2CodePKCE を設定すると、コンポーネントが code_verifier / code_challenge ペアを生成し、RFC 7636 に従って送信します(OAuth 2.1 では必須)。

プロバイダープリセット

兄弟コンポーネントの TsgcHTTP_OAuth2_Client_GoogleTsgcHTTP_OAuth2_Client_Microsoft は、適切なエンドポイントとスコープがあらかじめ設定されています。その他のプロバイダーにはベースクラスを使用してください。

ループバックリダイレクトリスナー

コンポーネントは設定された RedirectURL 上に小型の組み込み HTTP リスナーを起動し、認可コードを取得した後リスナーをシャットダウンします。外部 Web サーバーは不要です。

トークンの永続化

認可後に CurrentRefreshToken を読み取ってアプリ側で保存し、次回起動時に Refresh を呼び出せば、ユーザーへの認証要求が再度発生しません。

HTTP / WebSocket への簡単組み込み

Authentication.Token.OAuth 経由で TsgcHTTPClientTsgcHTTP2Client、または TsgcWebSocketClient と組み合わせると、すべてのリクエストにベアラートークンが自動的に挿入されます。

仕様・参考資料

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

ドキュメント・デモ

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

オンラインヘルプ — TsgcHTTP_OAuth2_Client このコンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — Demos\20.HTTP_Protocol\02.OAuth2_Authentication すぐに実行できるサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。以下から体験版をダウンロードできます。
技術ドキュメント (PDF) このコンポーネントの機能、クイックスタート、Delphi および C++ Builder 向けのコードサンプル、一次資料のリファレンスを掲載しています。
ユーザーマニュアル (PDF) ライブラリのすべてのコンポーネントを網羅した総合マニュアルです。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

Delphi に OAuth 2.0 を追加しませんか?

体験版をダウンロードして、OAuth 2.0 / 2.1 認証を Delphi アプリケーションに統合してください。