OAuth 2.0 Provider

Delphi で独自の OAuth 2.0 認可サーバーを構築できます。PKCE、署名付き JWT アクセストークン、プラグイン可能なストレージに対応した authorize、token、refresh、revoke エンドポイントを提供します。

TsgcHTTP_OAuth2_Server_Provider

OAuth 2.0 認可サーバーの完全な実装です。クライアントの登録、認可コードの発行、アクセストークンとリフレッシュトークンへの交換、JWT の署名、PKCE、リフレッシュローテーション、失効をサポートしています。

コンポーネントクラス

TsgcHTTP_OAuth2_Server_Provider

プロトコル

OAuth 2.0 (RFC 6749)

対応プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Enterprise

配置してクライアントを設定し、起動する

TsgcHTTP_OAuth2_Server_Provider を配置し、client_id と redirect_uri を登録して TsgcWebSocketHTTPServer に接続するだけで、標準エンドポイント(/authorize、/token、/revoke)が利用可能になります。

uses
  sgcWebSocket, sgcHTTP;

var
  Server: TsgcWebSocketHTTPServer;
  Provider: TsgcHTTP_OAuth2_Server_Provider;
begin
  Provider := TsgcHTTP_OAuth2_Server_Provider.Create(nil);
  Provider.ProviderOptions.AuthorizationEndpoint := '/oauth/authorize';
  Provider.ProviderOptions.TokenEndpoint         := '/oauth/token';
  Provider.ProviderOptions.RevocationEndpoint    := '/oauth/revoke';
  Provider.ProviderOptions.PKCE.Required := True;

  Provider.OnAuthorizeRequest := procedure(Sender: TObject;
    const aRequest: TsgcOAuth2_AuthorizeRequest;
    var aResponse: TsgcOAuth2_AuthorizeResponse)
  begin
    // validate user session, issue or deny the auth code
    aResponse.Code := GenerateAuthCode(aRequest.ClientId, aRequest.UserId);
  end;

  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 8443;
  Server.SSL  := True;
  Server.OAuth2.Provider := Provider;
  Server.Active := True;
end;
// uses: sgcWebSocket, sgcHTTP
TsgcHTTP_OAuth2_Server_Provider *Provider = new TsgcHTTP_OAuth2_Server_Provider(this);
Provider->ProviderOptions->AuthorizationEndpoint = "/oauth/authorize";
Provider->ProviderOptions->TokenEndpoint        = "/oauth/token";

TsgcWebSocketHTTPServer *Server = new TsgcWebSocketHTTPServer(this);
Server->OAuth2->Provider = Provider;
Server->Active = true;

主な機能

自己ホスト型の認可サーバーです。/authorize からリフレッシュトークンのローテーションまで、すべてを 1 つの Delphi コンポーネントで実現します。

Authorize エンドポイント

GET /authorize リクエストを処理し、response_typeclient_idredirect_uri を検証した後、ユーザーセッションのログイン UI 向けに OnAuthorizeRequest を発火します。

Token エンドポイント

POST /token は authorization_code、refresh_token、client_credentials グラントに対してアクセストークンとリフレッシュトークンを発行します。PKCE の code_verifier は RFC 7636 に従って検証されます。

JWT 署名付きアクセストークン

オプションで自己完結型の JWT アクセストークン(HS または RS / ES)を発行できます。リソースサーバーはイントロスペクションの往復なしに検証できます。

リフレッシュトークンのローテーション

ProviderOptions.RefreshToken.Rotation を有効にすると、リフレッシュのたびに新しいリフレッシュトークンが発行され、前のトークンが無効化されます。OAuth 2.1 のベストプラクティスに準拠しています。

Revocation エンドポイント

POST /revoke は RFC 7009 に従ってアクセストークンまたはリフレッシュトークンを無効化します。Bearer および client_credentials の両方の失効に対応しています。

プラグイン可能なストレージ

OnLookupClientOnPersistAuthCodeOnPersistRefreshToken などのイベントにより、FireDAC、SQLite、Redis、または独自の DAL をストレージとして使用できます。

仕様・参考資料

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

ドキュメント・デモ

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

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

独自の OAuth 2.0 プロバイダーを立ち上げませんか?

体験版をダウンロードして、Delphi で OAuth 2.0 認可サーバーを構築してください。