OAuth 2.0 提供商

在 Delphi 中搭建您自己的 OAuth 2.0 授权服务器。提供带 PKCE、签名 JWT 访问令牌和可插拔存储的授权、令牌、刷新和撤销端点。

TsgcHTTP_OAuth2_Server_Provider

完整的 OAuth 2.0 授权服务器实现:注册客户端、颁发授权码、兑换为访问令牌和刷新令牌、签发 JWT,并支持 PKCE、刷新令牌轮换和撤销。

组件类

TsgcHTTP_OAuth2_Server_Provider

平台

Windows, macOS, Linux, iOS, Android

版本

Enterprise

放置组件,配置客户端,运行

放置 TsgcHTTP_OAuth2_Server_Provider,注册 client_ids 和 redirect_uris,附加到 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
    // 验证用户会话,颁发或拒绝授权码
    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 到刷新令牌轮换,一个 Delphi 组件全部搞定。

授权端点

处理 GET /authorize 请求,验证 response_typeclient_idredirect_uri,然后触发 OnAuthorizeRequest 供您的用户会话登录界面使用。

令牌端点

POST /token 为 authorization_code、refresh_token 和 client_credentials 许可颁发访问令牌和刷新令牌。按 RFC 7636 验证 PKCE code_verifier

JWT 签名访问令牌

可选颁发自包含的 JWT 访问令牌(HS 或 RS/ES),使资源服务器无需内省往返即可验证。

刷新令牌轮换

启用 ProviderOptions.RefreshToken.Rotation 后,每次刷新都会颁发新的刷新令牌并使前一个失效 — 符合 OAuth 2.1 最佳实践。

撤销端点

POST /revoke 按 RFC 7009 使访问令牌或刷新令牌失效 — 支持 Bearer 和 client_credentials 撤销。

可插拔存储

OnLookupClientOnPersistAuthCodeOnPersistRefreshToken 等事件允许使用 FireDAC、SQLite、Redis 或您自己的数据访问层为提供商提供存储后端。

规范与参考

本组件所实现标准的权威来源。

文档与演示

直达组件参考,获取可立即运行的演示项目,并下载试用版。

在线帮助 — TsgcHTTP_OAuth2_Server_Provider 本组件的完整属性、方法和事件参考。
演示项目 — Demos\20.HTTP_Protocol\08.OAuth2_ServerProvider 可立即运行的示例项目,随 sgcWebSockets 包一起提供 — 请从下方下载试用版。
技术文档 (PDF) 仅涵盖本组件的功能、快速入门、Delphi 和 C++ Builder 代码示例及主要参考来源。
用户手册 (PDF) 涵盖库中每个组件的综合手册。

准备好运行您自己的 OAuth 2.0 提供商了吗?

下载免费试用版,在 Delphi 中搭建 OAuth 2.0 授权服务器。