eSeGeCe — 面向 Delphi 和 .NET 的企业级通信组件
精选 · sgcAuth

OAuth2 和 JWT,原生运行于 Delphi

两个组件把现代身份验证中令牌相关的部分带入您的应用程序。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 运行时。

  • 2 个客户端组件
  • OAuth2 · JWT · WebAuthn
  • 已实现 9 项 RFC
  • Delphi 7 到 13 · C++ Builder

两个组件,覆盖完整的令牌生命周期

sgcAuth 是一个独立软件包。它内置其所基于的 sgcWebSockets Core 运行时,每份许可证都附带完整源代码,因此令牌交换流程可以在您自己的调试器中单步跟踪。

2 客户端组件 TsgcHTTP_OAuth2_ClientTsgcHTTP_JWT_Client,位于同一个面板页面。
9 已实现的 RFC OAuth2、PKCE、DPoP、Device Code、JWT/JWS/JWE 等。
5 目标平台 Windows、macOS、Linux 64-bit、iOS 和 Android,同一份源码树。
1 独立安装程序 sgcWebSockets Core 运行时和 HTTP/TLS 层全部内置在这一个软件包中。
100% 包含源代码 每份许可证都附带两个组件及所内置运行时的完整源代码。
sgcAuth

面向 Delphi 和 C++ Builder 的 OAuth2 客户端、JWT 客户端和 WebAuthn 通行密钥支持。独立软件包,内置 sgcWebSockets Core 运行时,提供完整源代码,并可免版税部署。

每项任务一个组件,同一种 API 风格

把组件拖放到窗体上,设置提供商或密钥信息,接好事件,然后调用 StartSign。两者的命名保持一致,因此无论使用哪种授权模式或算法,身份验证流程读起来都是一样的。

OAuth2

五种授权模式,一个组件

TsgcHTTP_OAuth2_Client 通过 OAuth2Options.GrantType 驱动多种授权模式:面向可信服务端应用的 auth2Code,面向原生、移动端和单页应用的 auth2CodePKCE,面向守护进程和服务账号的 auth2ClientCredentialsauth2ResourceOwnerPassword,以及面向智能电视、自助终端等输入受限设备的 auth2DeviceCode(RFC 8628)。Start 会打开系统浏览器,并通过 LocalServerOptions 启动一个小型本地 HTTP 服务器来捕获重定向,再以纯 HTTPS 方式用授权码换取令牌。此后 RefreshRevokeIntrospect 覆盖令牌的后续生命周期,DPoPOptions 为要求持有证明(RFC 9449)的提供商添加 DPoP 支持。

查看 OAuth2 客户端 →
JWT

签名、附加或验证,由您选择

TsgcHTTP_JWT_Client 通过 JWTOptions 提供 RFC 7519 所需的一切:JOSE Header,已注册的 Payload 声明(isssubaudexpnbfiatjti,另可添加自定义声明),以及用于 HMAC、RSA 和 ECDSA 的密钥材料。调用 Sign 可直接得到紧凑序列化格式的令牌,也可以设置 RefreshTokenAfter,让组件自动重新签名。同一个组件可直接接入 TsgcWebSocketClientTsgcHTTP1ClientTsgcHTTP2ClientAuthentication.Token.JWT,这样每个出站请求都会携带最新的 Bearer 令牌。

查看 JWT 客户端 →
WebAuthn

通行密钥,经由 sgcCustomIndy

无密码登录由 TsgcWSAPIServer_WebAuthn 提供,这是一个 sgcWebSockets Enterprise/All-Access 组件,构建在 sgcCustomIndy 附加包所提供的经过修补的 Indy 库之上。订购 sgcAuth 时会自动添加。

查看它能做什么 →
使用场景

登录、服务账号和您自己的 API

使用 Google 或 Microsoft 登录、服务器到服务器的 API 访问、智能电视和自助终端、无需重新提示的长会话,以及为您自己的 WebSocket 和 HTTP API 提供 Bearer 令牌。两个组件都能愉快地运行在 VCL 或 FMX 应用程序、服务或控制台进程中。

功能矩阵 →
跨平台

纯 HTTPS 与签名,无需原生库

两个组件都只依赖 Core 运行时的 HTTP 客户端栈和平台的加密原语,因此可以在 Delphi 支持的任何平台上编译和运行。从 Delphi 7 到 RAD Studio 13,以及 C++ Builder。

功能矩阵 →

每个组件的参考页面:

获取一个令牌,签发一个令牌

两个组件遵循同样的形态:配置选项,然后调用方法。它们都可以在 Delphi 7 到 13 以及 C++ Builder 中编译,.NET 也提供相同的属性。

uses
  sgcHTTP_OAuth2_Client;
var
  OAuth2: TsgcHTTP_OAuth2_Client;
begin
  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
end;

procedure TForm1.OAuth2AccessToken(Sender: TObject);
begin
  Memo1.Lines.Add('Access token received.');
end;
uses
  sgcHTTP_JWT_Client;
var
  JWT: TsgcHTTP_JWT_Client;
begin
  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);

  // or attach it to a WebSocket / HTTP client directly:
  // Client.Authentication.Token.Enabled := True;
  // Client.Authentication.Token.JWT := JWT;
end;

在 Object Pascal 和 C++ Builder 中是同一种形态。完整功能矩阵 →

三件值得先了解的事

sgcAuth 需要您准备什么、您是否已经拥有这些组件,以及 WebAuthn 还需要什么。三个答案都很简短,而且都写在这个页面上,而不是藏在小字条款里。

组件与授权模式
任务         组件                       授权模式 / 算法
OAuth2       TsgcHTTP_OAuth2_Client    Code、PKCE、Client Credentials、
                                        Resource Owner Password、Device Code
JWT          TsgcHTTP_JWT_Client       HS256/384/512、RS256/384/512、ES256/384/512

是否已经拥有?
OAuth2 客户端和 JWT 客户端均自 Standard 版本起
  随 sgcWebSockets 提供。
sgcAuth 用于在不购买完整 sgcWebSockets 版本的
  情况下单独获取 OAuth2 + JWT 授权。

sgcAuth 是独立产品

作为独立产品,已内置 sgcWebSockets Core 运行时:两个组件用于 POST 令牌请求的 HTTP/TLS 客户端栈,以及解析响应的 JSON 机制。一个安装程序,开箱即含完整源代码。

您的 sgcWebSockets 版本中是否已经包含?

OAuth2 客户端和 JWT 客户端均自 Standard 版本起随 sgcWebSockets 提供,因此只要您拥有任意版本的 sgcWebSockets,就已经拥有这两个组件。sgcAuth 面向相反的情形:您希望获得 OAuth2 和 JWT 客户端支持,但不想购买完整的 sgcWebSockets 版本。

WebAuthn 需要 sgcCustomIndy

WebAuthn 无密码登录由 TsgcWSAPIServer_WebAuthn 提供,这是一个 sgcWebSockets Enterprise/All-Access 组件,构建在 sgcCustomIndy 所提供的经过修补的 Indy 库之上。WebAuthn 需要 sgcCustomIndy 附加包,订购 sgcAuth 时会自动添加。已经拥有 sgcCustomIndy 授权?可以在结账前从购物车中移除自动添加的这一项,两种方式都不会产生额外费用。

Delphi 和 C++ Builder

sgcAuth 面向 Delphi 7 到 RAD Studio 13 以及 C++ Builder。免费试用版安装程序就是 sgcWebSockets All-Access 试用版,因此今天就可以评估这两个组件。

PKCE Device Code DPoP HMAC · RSA · ECDSA 完整源代码

每个组件和属性 →

sgcAuth 对接的是公开发布的 OAuth2/OIDC 和 JWT/JWS 标准,而不是对某个厂商 SDK 的封装,因此提供商由您选择:Google、Microsoft、Auth0、Okta、Keycloak,或任何符合 RFC 规范的授权服务器。授权、刷新、吊销和签名都是一等的方法和事件,完整源代码意味着中间没有任何一环是黑盒。

十二个组件库,一个工具箱

sgcAuth 是 eSeGeCe 面向 Delphi、C++ Builder 和 .NET 的十二个组件库之一。它们共享同样的约定,提供完整源代码,并可免版税部署。

sgcAuth

面向 Delphi 和 C++ Builder 的 OAuth2 客户端、JWT 客户端和 WebAuthn 支持。独立产品,随附 sgcWebSockets Core 运行时。

了解更多 →

sgcHTTP

面向 Delphi 和 C++ Builder 的 HTTP/2 客户端、gRPC 客户端以及 Google Cloud Pub/Sub、Calendar 和 FCM 客户端。独立产品,随附 sgcWebSockets Core 运行时。

了解更多 →

sgcWebSockets

面向 Delphi、C++ Builder、Lazarus 和 .NET 的 WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI 及 30+ API 集成。Core 运行时就在这个库中。

了解更多 →

sgcMQ

面向 Delphi 和 C++ Builder 的 MQTT、AMQP 0.9.1 和 1.0、Apache Kafka 与 STOMP 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。

了解更多 →

sgcSocial

面向 Delphi 和 C++ Builder 的 Telegram 和 WhatsApp Business 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。

了解更多 →

sgcHTML

基于 Bootstrap 5 和 htmx 的服务器端 HTML 和界面组件,其中包含一个 WebAuthn 登录 UI 组件。

了解更多 →

sgcQUIC

原始 QUIC 传输,以及 HTTP/3 客户端和服务器,并支持 WebTransport。作为 sgcWebSockets Enterprise 的附加组件。

了解更多 →

sgcAI

面向 Delphi 和 C++ Builder 的 AI、LLM 和 MCP 组件。一个组件即可对接七家 LLM 提供商,另有 MCP、嵌入和语音。独立产品,随附 sgcWebSockets Core 运行时。

了解更多 →

sgcOpenAPI

OpenAPI 3.x 解析器、原生 Pascal SDK 生成器、OpenAPI 服务器组件,以及 1,195+ 预构建云 SDK。

了解更多 →

sgcSign

文档使用 XAdES、PAdES、CAdES 和 ASiC,代码使用 Authenticode、ClickOnce、NuGet 和 VSIX。

了解更多 →

sgcBiometrics

面向 Delphi 和 C++ Builder 的 Windows Hello、指纹传感器和 Windows 生物特征框架。

了解更多 →

sgcIndy

更新后的 Indy TCP/IP 组件,为 Delphi 7 到 13 提供现代 TLS、IPv6 和 HTTP/2。

了解更多 →

查看价格和许可证 下载免费试用版

开发者怎么说

受到全球各地 Delphi、C++ Builder、Lazarus 和 .NET 开发者的信赖。

你们的 sgcWebSockets 库非常实用,而且易于设置。请继续保持!

Simone Moretti Delphi 开发者

sgcWebSockets 非常出色,你们的支持也是最棒的!

Christian Meyer 创始人兼首席技术官

非常感谢你们的帮助和支持,我很喜欢你们的组件。

Mark Steinfeld 首席技术官

您正在浏览 eSeGeCe 的 身份验证 视角。

换个角度看看 →

交付完整的身份验证,而不只是一个令牌库

OAuth2 和 JWT 集于一个软件包,内置 sgcWebSockets Core 运行时,开箱即含完整源代码。