sgcAuth: componentes OAuth2, JWT y WebAuthn para Delphi y C++ Builder
Producto independiente OAuth2, JWT y WebAuthn

sgcAuth: componentes OAuth2, JWT y WebAuthn para Delphi y C++ Builder

Dos componentes cliente llevan el lado de los tokens de la autenticación moderna a tu aplicación. TsgcHTTP_OAuth2_Client ejecuta los grants Authorization Code, PKCE, Client Credentials, Resource Owner Password y Device Code contra cualquier proveedor OAuth2/OIDC. TsgcHTTP_JWT_Client construye, firma y verifica JSON Web Tokens, por sí solo o como fuente del token Bearer para tus clientes WebSocket y HTTP. sgcAuth es independiente, incluye el runtime sgcWebSockets Core sobre el que están construidos ambos clientes.

Código fuente completo
Delphi 7 a 13 y C++ Builder
Runtime incluido sgcWebSockets Core El runtime HTTP, TLS y JSON bajo ambos clientes
OAuth2 TsgcHTTP_OAuth2_Client
JWT TsgcHTTP_JWT_Client
2 Componentes cliente Una sola página en la paleta de componentes
9 RFCs implementadas OAuth2, PKCE, DPoP, Device Code, JWT/JWS/JWE y más
5 Plataformas Windows, macOS, Linux, iOS y Android
100% Código fuente incluido Ambos clientes y el runtime Core incluido
12 Meses de actualizaciones Cada versión publicada mientras tu licencia esté activa

Tres cosas que conviene saber primero

Qué necesita sgcAuth de ti, si ya tienes estos componentes, y qué necesita WebAuthn además. Las tres respuestas son breves.

sgcAuth es autocontenido

Independiente, el runtime sgcWebSockets Core viene incluido: la pila cliente HTTP/TLS con la que ambos componentes envían por POST sus peticiones de token, y la maquinaria JSON que analiza las respuestas. Un solo SKU, un solo instalador.

El código fuente completo se entrega con cada licencia, así que puedes recorrer paso a paso ambos clientes y el runtime que hay debajo en tu propio depurador, en lugar de verlos desaparecer dentro de un binario.

Solapamiento de ediciones

¿Ya lo tienes en tu edición de sgcWebSockets?

Tanto el cliente OAuth2 como el cliente JWT se entregan dentro de sgcWebSockets desde la edición Standard en adelante, así que si ya tienes cualquier edición de sgcWebSockets ya dispones de ambos componentes. All-Access lo incluye todo.

sgcAuth existe para el caso contrario: quieres soporte de cliente OAuth2 y JWT en Delphi o C++ Builder sin licenciar una edición completa de sgcWebSockets. Comprueba qué cubre ya tu edición antes de comprar.

Add-on necesario

WebAuthn necesita sgcCustomIndy

El inicio de sesión sin contraseña con WebAuthn lo sirve TsgcWSAPIServer_WebAuthn, un componente de sgcWebSockets Enterprise/All-Access construido sobre la librería Indy parcheada que sgcCustomIndy entrega como add-on. WebAuthn requiere el add-on sgcCustomIndy, que se añade automáticamente cuando pides sgcAuth.

¿Ya tienes una licencia de sgcCustomIndy? Elimina la línea añadida automáticamente de tu carrito antes de pagar, no hay coste extra en ningún caso.

Dos clientes, todo el ciclo de vida del token

Cada uno es un componente no visual que sueltas en un formulario o creas por código, declarado bajo el prefijo de unidad sgc y registrado en la página de paleta SGC Auth. Configura los datos del proveedor, conecta los eventos y luego llama a Start.

OAuth21 componente

Cinco tipos de grant, un componente

TsgcHTTP_OAuth2_Client controla OAuth2Options.GrantType a través de auth2Code para aplicaciones de servidor de confianza, auth2CodePKCE para aplicaciones nativas, móviles y de una sola página, auth2ClientCredentials para daemons y cuentas de servicio, auth2ResourceOwnerPassword, y auth2DeviceCode (RFC 8628) para smart TVs, kioscos y otros dispositivos con entrada limitada. Apunta AuthorizationServerOptions a los endpoints de autorización, token, revocación e introspección de tu proveedor y el componente se encarga del resto: cuando Active/Start ejecuta el flujo Authorization Code, abre el navegador del sistema y levanta un pequeño servidor HTTP local a partir de LocalServerOptions para capturar la redirección, intercambiando el código por un token sobre HTTPS puro a través de HTTPClientOptions. Refresh, Revoke e Introspect cubren el ciclo de vida del token a partir de ahí, y DPoPOptions junto con GenerateDPoPKeyPair añaden la prueba de posesión DPoP (RFC 9449) para los proveedores que la requieren. Los presets ya preparados de Google y Microsoft configuran por ti los endpoints y scopes habituales.

TsgcHTTP_OAuth2_Client RFC 6749 · PKCE · Device Code · DPoP
JWT1 componente

Firma, adjunta o verifica, tú eliges

TsgcHTTP_JWT_Client publica todo lo que necesita RFC 7519 a través de JWTOptions: la cabecera JOSE Header (alg, typ, kid), los claims registrados de Payload (iss, sub, aud, exp, nbf, iat, jti, más claims personalizados a través de AddKeyValue), y el material de clave bajo Algorithms para HMAC (HS.Secret), RSA (RS.PrivateKey) y ECDSA (ES.PrivateKey). Llama a Sign para obtener directamente el token en serialización compacta, útil para servicios sin cliente HTTP o WebSocket propio, o configura RefreshTokenAfter y deja que el componente refresque iat/exp y vuelva a firmar automáticamente. El mismo componente se conecta directamente a Authentication.Token.JWT en TsgcWebSocketClient, TsgcHTTP1Client y TsgcHTTP2Client, así que cada petición saliente lleva un token Bearer recién firmado sin que tengas que tocar la cabecera tú mismo.

TsgcHTTP_JWT_Client RFC 7519 · JWS · JWE

Flujos de autenticación desde código Delphi

Los dos componentes son componentes no visuales corrientes, así que encajan en lo que ya sea tu aplicación: una aplicación de escritorio VCL, un servicio de Windows, un demonio de Linux. Estos son los patrones que construyen los clientes, cada uno asociado a la propiedad o método que lo activa.

Inicio de sesión con Google o Microsoft auth2CodePKCE

Los presets ya preparados de Google y Microsoft configuran por ti los endpoints de autorización y token y los scopes.

Acceso a API servidor a servidor auth2ClientCredentials

Los trabajos en segundo plano y las cuentas de servicio se autentican ante una API sin que haya un usuario de por medio.

Smart TVs, kioscos y dispositivos IoT auth2DeviceCode

El dispositivo muestra un código corto, y el usuario termina el inicio de sesión desde su móvil u ordenador portátil.

Sesiones largas sin volver a pedir credenciales Refresh

Intercambia un refresh token por un nuevo access token en segundo plano, sin necesidad de pasar por el navegador.

Autentica tus propias APIs WebSocket y HTTP Authentication.Token.JWT

El cliente JWT firma tokens Bearer para TsgcWebSocketClient, TsgcHTTP1Client y TsgcHTTP2Client automáticamente.

Firma de tokens independiente Sign

Construye y firma una cadena JWT para cualquier base de código, sin necesidad de un componente WebSocket o HTTP.

Un salto al navegador, una firma y un runtime incluido

OAuth2 y JWT resuelven problemas distintos, uno negocia un token con un servidor remoto, el otro firma uno localmente, y ese es precisamente el sentido de empaquetarlos juntos: sgcAuth oculta la diferencia detrás de las mismas convenciones de componente, con el runtime sgcWebSockets Core incluido haciendo la fontanería por debajo.

OAuth2 es un salto al navegador, y luego HTTPS puro

Start abre el navegador del sistema (o, para Device Code, te entrega el código de usuario que mostrar) y un listener HTTP local a partir de LocalServerOptions captura la redirección de autorización. El intercambio por el access token es un POST HTTPS puro emitido a través de HTTPClientOptions, sobre la pila cliente HTTP del runtime Core.

JWT es firma, no red

TsgcHTTP_JWT_Client nunca abre un socket. JWTOptions configura la cabecera, el payload y el material de clave, y Sign devuelve el token en serialización compacta, HMAC, RSA o ECDSA, listo para adjuntar a cualquier petición que envíe tu propio código.

El runtime Core viene en la caja

Independiente, el runtime sgcWebSockets Core viene incluido. Aporta la pila cliente HTTP/TLS por la que ambos componentes envían sus peticiones POST y el analizador JSON que lee las respuestas, y su código fuente completo forma parte del paquete como todo lo demás.

WebAuthn es la tercera pieza, vía sgcCustomIndy

El inicio de sesión sin contraseña lo gestiona TsgcWSAPIServer_WebAuthn, un componente servidor de sgcWebSockets Enterprise/All-Access que necesita la compilación Indy parcheada que entrega sgcCustomIndy. Pedir sgcAuth añade sgcCustomIndy a tu carrito automáticamente.

Obtén un token, firma un token

Los dos componentes siguen la misma forma: configura las opciones y luego llama a un método. Compilan en Delphi 7 a 13 y en C++ Builder, y las mismas propiedades están expuestas en .NET.

uses
  sgcHTTP_OAuth2_Client, sgcHTTP_JWT_Client;

var
  OAuth2: TsgcHTTP_OAuth2_Client;
  JWT: TsgcHTTP_JWT_Client;
begin
  // OAuth2: Authorization Code Grant with PKCE
  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

  // JWT: sign a token for your own API
  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);
end;

procedure TForm1.OAuth2AccessToken(Sender: TObject);
begin
  Memo1.Lines.Add('Access token received.');
end;

El mismo componente JWT se conecta directamente a un cliente WebSocket o HTTP: configura Client.Authentication.Token.Enabled := True y Client.Authentication.Token.JWT := JWT, y cada petición sale con un token Bearer recién firmado.

// include: sgcHTTP_OAuth2_Client.hpp, sgcHTTP_JWT_Client.hpp

// OAuth2: Authorization Code Grant with PKCE
TsgcHTTP_OAuth2_Client *OAuth2 = new TsgcHTTP_OAuth2_Client(this);
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

// JWT: sign a token for your own API
TsgcHTTP_JWT_Client *JWT = new TsgcHTTP_JWT_Client(this);
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());

void __fastcall TForm1::OAuth2AccessToken(TObject *Sender)
{
  Memo1->Lines->Add("Access token received.");
}

El mismo componente JWT se conecta directamente a un cliente WebSocket o HTTP: configura Client->Authentication->Token->Enabled = true y Client->Authentication->Token->JWT = JWT, y cada petición sale con un token Bearer recién firmado.

HTTPS puro y firma, sin librería nativa

Ninguno de los dos componentes depende de nada más allá de la pila cliente HTTP del runtime Core y las primitivas criptográficas de la plataforma, así que ambos compilan y se ejecutan en cualquier lugar donde lo haga Delphi.

TsgcHTTP_OAuth2_Client Authorization Code, PKCE, Client Credentials, Resource Owner Password, Device Code
Windows Win32 Windows Win64 Linux64 macOS iOS Android
TsgcHTTP_JWT_Client HS256/384/512, RS256/384/512, ES256/384/512
Windows Win32 Windows Win64 Linux64 macOS iOS Android
Soporte de IDE Un único árbol de código, paquetes de diseño por versión
Delphi 7 a 13 C++ Builder
Instalador de prueba La prueba All-Access de sgcWebSockets incluye los componentes Auth
Una sola descarga, ambos componentes

Descargar el instalador de prueba →

Un paquete independiente

sgcAuth se licencia por separado, desde €149 para un solo desarrollador. Todas las licencias incluyen código fuente completo, 1 año de actualizaciones y un descuento de renovación del 50% al 70%: un 50% al renovar un pack, un 60% con dos y un 70% con tres o más. sgcAI, sgcMQ, sgcSocial, sgcCustomIndy, sgcAuth y sgcHTTP cuentan cada uno como un pack.

sgcAuth

€149

Disponible en licencias Single, Team y Site.

  • Cliente OAuth2: Authorization Code, PKCE, Client Credentials, Device Code
  • Cliente JWT para emitir, firmar y verificar tokens
  • Passkeys WebAuthn, vía sgcCustomIndy (se añade automáticamente)
  • Runtime sgcWebSockets Core incluido
  • Delphi 7 a 13 y C++ Builder
  • Código fuente completo
  • 1 año de actualizaciones

sgcAuth incluye el runtime sgcWebSockets Core, así que no hay nada más que comprar para los clientes OAuth2 y JWT.

El pedido muestra dos líneas: el derecho de uso del runtime sgcWebSockets Core, que se factura a cero, y el propio paquete sgcAuth. sgcCustomIndy se añade automáticamente para WebAuthn, elimínalo si ya tienes una licencia. Todos los detalles de precios.

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
Garantía de devolución de 30 días¿No estás satisfecho? Solicita un reembolso completo en los 30 días posteriores a la compra. Ver política de reembolso

Lanza autenticación, no una librería de tokens

OAuth2 y JWT desde código nativo de Delphi y C++ Builder, con el runtime incluido y el código fuente completo en la caja. Descarga hoy mismo el instalador de prueba All-Access y suelta los dos componentes en un formulario.

Otros productos de eSeGeCe

Combina sgcAuth con nuestras otras librerías de componentes para Delphi, C++ Builder y .NET.

sgcWebSockets

La librería completa: clientes y servidores WebSocket, HTTP/2, IoT, P2P y componentes de IA. Sus ediciones también incluyen los clientes OAuth2 y JWT.

Más información →

sgcCustomIndy

La librería Indy personalizada sobre la que está construido sgcWebSockets Enterprise, empaquetada como add-on. Necesaria para WebAuthn, se añade automáticamente a los pedidos de sgcAuth.

Más información →

sgcAI

Componentes de IA, LLM y MCP. Un solo componente de chat llega a OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok y Mistral.

Más información →

sgcMQ

Componentes cliente nativos de MQTT 3.1.1/5.0, AMQP 0.9.1, AMQP 1.0, Apache Kafka y STOMP, con el runtime Core incluido.

Más información →

sgcSocial

Componentes cliente de WhatsApp Business Cloud API y Telegram TDLib, con el runtime Core incluido.

Más información →

sgcHTML

Componentes HTML/UI de servidor conectados a datos para Delphi, C++ Builder y .NET, con Bootstrap 5 y htmx, incluyendo un componente de UI de inicio de sesión WebAuthn.

Más información →