OAuth 2.0 Server

sgcWebSockets の HTTP サーバーおよび WebSocket サーバー向けのサーバーサイド OAuth 2.0 保護コンポーネントです。JWT 検証または RFC 7662 イントロスペクションによりアクセストークンを検証します。

TsgcHTTP_OAuth2_Server

軽量なリソースサーバーコンポーネントです。JWT 署名検証または RFC 7662 トークンイントロスペクションで受信ベアラートークンを検証し、解析済みクレームをアプリケーションに公開します。

コンポーネントクラス

TsgcHTTP_OAuth2_Server

プロトコル

OAuth 2.0 (RFC 6749)

対応プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Enterprise

配置してサーバーに接続し、トークンを受け付ける

JWT 鍵(またはイントロスペクション URL)を設定して TsgcWebSocketHTTPServer.OAuth2 に接続するだけで、ハンドラーが発火する前に受信リクエストのトークンが検証されます。

uses
  sgcWebSocket, sgcHTTP;

var
  Server: TsgcWebSocketHTTPServer;
  OAuth2: TsgcHTTP_OAuth2_Server;
begin
  OAuth2 := TsgcHTTP_OAuth2_Server.Create(nil);
  OAuth2.OAuth2Options.JWT.Algorithms.HS.Secret := 'shared-secret';

  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 8443;
  Server.SSL  := True;
  Server.Authentication.OAuth2.Enabled := True;
  Server.Authentication.OAuth2.Server  := OAuth2;

  Server.Active := True;
end;
// uses: sgcWebSocket, sgcHTTP
TsgcHTTP_OAuth2_Server *OAuth2 = new TsgcHTTP_OAuth2_Server(this);
OAuth2->OAuth2Options->JWT->Algorithms->HS->Secret = "shared-secret";

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

主な機能

JWT 検証またはイントロスペクション検証済みのアクセストークンで HTTP および WebSocket エンドポイントを保護するリソースサーバーコンポーネントです。

JWT 検証

静的鍵または JWKS エンドポイントに対する内蔵 JWT 検証器(HS / RS / ES / EdDSA)です。自己完結型トークンの場合、発行者への往復が不要です。

トークンイントロスペクション

RFC 7662 に従って OAuth2Options.IntrospectionURL を設定すると、コンポーネントが受信トークンを発行者に POST し、有効/無効の結果を TTL 付きでキャッシュします。

スコープの強制

OAuth2Options.RequiredScope を設定すると、指定したスコープを持つトークンのみアクセスを許可します。OnAuthError が拒否理由を報告します。

WebSocket 対応

HTTP リクエストと WebSocket アップグレードの両方に対応しています。アップグレード時の Authorization ヘッダー(またはクエリトークン)が OnConnect の前に検証されます。

OnVerify フック

カスタムクレーム検証(マルチテナント aud、動的スコープマッピング、アカウントステータス)のために OnVerify を実装します。Accept = False を返すと 401 でショートサーキットします。

プロバイダー兄弟コンポーネント

TsgcHTTP_OAuth2_Server_Provider はこのコンポーネントを完全な認可サーバー(発行者)に拡張します。クライアント/リフレッシュトークンを永続化する authorize、token、revoke エンドポイントを提供します。

仕様・参考資料

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

ドキュメント・デモ

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

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

OAuth 2.0 で API を保護しませんか?

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