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. Cinco componentes más añaden segundos factores TOTP, inicio de sesión LDAP y Active Directory, inicio de sesión único SAML, OpenID Connect y OAuth2 para correo. 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

sgcAuth en dos minutos

OAuth2, JWT y passkeys WebAuthn en Delphi y C++Builder, en el cliente y en tu propio servidor.

7 Componentes 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. Los componentes WebAuthn, TOTP, LDAP, SAML, OpenID Connect y Mail OAuth2 se entregan en Enterprise. 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 y passkeys 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. Los componentes TOTP, LDAP, SAML, OpenID Connect y Mail OAuth2 se desbloquean con el mismo add-on.

¿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.

Clientes de token, segundos factores e inicio de sesión único

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. Los componentes TOTP, LDAP, SAML, OpenID Connect y Mail OAuth2 se desbloquean junto con sgcCustomIndy, igual que WebAuthn.

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
TOTP1 componente

Códigos de segundo factor, cada uno aceptado una vez

TsgcTOTPAuthenticator añade a tu inicio de sesión los códigos de seis dígitos de cualquier app de autenticación, Google Authenticator y Microsoft Authenticator incluidas. GenerateSecret crea un secreto Base32 aleatorio y GetProvisioningURI construye la URI otpauth:// que renderizas como código QR durante el alta. VerifyCode comprueba lo que escribe el usuario con una Window configurable para el desfase de reloj, y su sobrecarga con protección contra repetición nunca acepta dos veces el mismo intervalo de tiempo. GenerateHOTP y VerifyHOTP cubren los tokens hardware basados en contador, GenerateRecoveryCodes rellena una lista de códigos de reserva de un solo uso, y Algorithm, Digits y Period seleccionan HMAC-SHA1, HMAC-SHA256 o HMAC-SHA512 con códigos de 6 a 8 dígitos.

TsgcTOTPAuthenticator RFC 6238 · RFC 4226 · otpauth QR
LDAP1 componente

Inicio de sesión en Active Directory sobre TLS

TsgcLDAPClient es un cliente LDAP v3 que comprueba nombres de usuario y contraseñas contra Active Directory o cualquier otro directorio LDAP. Security selecciona LDAPS en el puerto 636 o StartTLS en el puerto 389, y un StartTLS rechazado cierra la conexión en lugar de caer de vuelta a texto claro. AuthenticationMode convierte lo que escribe el usuario en el nombre de bind, como UPN, como nombre DOMAIN\user, como DN completo, o como bind de servicio seguido de una búsqueda con UserSearchFilter, y Authenticate hace toda la comprobación en una sola llamada. GetUserGroups devuelve la pertenencia a grupos directa o anidada a través de LDAP_MATCHING_RULE_IN_CHAIN, Search pagina automáticamente los resultados grandes, y cada método público está serializado, así que una sola instancia puede servir a un servidor multihilo.

TsgcLDAPClient RFC 4511 · LDAPS · StartTLS
SAML1 componente

Inicio de sesión único empresarial para tu web app

TsgcSAMLServiceProvider convierte tu aplicación web Delphi en un proveedor de servicio SAML 2.0 para Microsoft Entra ID, Okta, AD FS, Google Workspace, Keycloak y otros proveedores de identidad. GetMetadata produce los metadatos que registras en el IdP y LoadIdPMetadata lee los suyos. GetAuthnRequestRedirectURL y GetAuthnRequestPostForm envían el navegador a iniciar sesión por el binding Redirect o POST, y ProcessResponse valida lo que vuelve: la firma solo contra los IdPCertificates de confianza, exactamente una aserción para evitar el signature wrapping, y a continuación el emisor, la audiencia, el destino, InResponseTo, la ventana de validez y una caché de repeticiones. El resultado llega como un TsgcSAMLResult con el NameID, el índice de sesión y los atributos.

TsgcSAMLServiceProvider SAML 2.0 · HTTP-Redirect · HTTP-POST
OpenID Connect1 componente

Inicio de sesión con cualquier proveedor OpenID

TsgcHTTP_OIDC_Client extiende el cliente OAuth2 con OpenID Connect. Define OIDCOptions.Issuer y Discover rellena los endpoints y el JWKSURI a partir de la configuración del proveedor. Start ejecuta el inicio de sesión por navegador con PKCE y un nonce nuevo, y luego valida la firma, el emisor, la audiencia, la caducidad y el nonce del token ID, aceptando solo RS256, RS384, RS512, ES256 y ES384, nunca none ni los algoritmos HS. OnOIDCIDToken entrega los claims, GetUserInfo devuelve el perfil, y una caché de claves segura para hilos sigue la rotación de claves sin necesidad de reiniciar. En el lado servidor, sgcOIDC_ValidateIDToken comprueba los tokens Bearer que recibe tu API REST o tu servidor WebSocket contra la misma caché.

TsgcHTTP_OIDC_Client OpenID Connect Core 1.0 · Discovery · PKCE
Mail OAuth21 componente

Autenticación moderna para SMTP, IMAP y POP3

TsgcMailOAuth2 obtiene los tokens que Microsoft 365 y Gmail esperan para el correo. Elige el Provider (mopMicrosoft365, mopGmail o mopCustom) y los Protocols que usas, y el componente solicita los scopes correspondientes. Flow ejecuta el inicio de sesión por navegador con PKCE y una redirección loopback, o el flujo de código de dispositivo para servicios y consolas. Refresh renueva el token de acceso y OnTokensChanged se dispara cada vez, así puedes guardar el nuevo refresh token. GetXOAuth2 y GetOAuthBearer devuelven las cadenas SASL para AUTH XOAUTH2 y AUTH OAUTHBEARER, listas para Indy TIdSMTP, TIdIMAP4 y TIdPOP3 o cualquier otra librería de correo.

TsgcMailOAuth2 RFC 7628 · XOAUTH2 · Microsoft 365 · Gmail

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, sgcHTTP_OAuth_Types, sgcHTTP_JWT_Types;

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.Clear;
  OAuth2.AuthorizationServerOptions.Scope.Add('openid');
  OAuth2.AuthorizationServerOptions.Scope.Add('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; const Access_Token,
  Token_Type, Expires_In, Refresh_Token, Scope, RawParams: String;
  var Handled: Boolean);
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.hpp, sgcHTTP_OAuth_Types.hpp, sgcHTTP_JWT_Types.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->Clear();
OAuth2->AuthorizationServerOptions->Scope->Add("openid");
OAuth2->AuthorizationServerOptions->Scope->Add("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,
  const UnicodeString Access_Token, const UnicodeString Token_Type,
  const UnicodeString Expires_In, const UnicodeString Refresh_Token,
  const UnicodeString Scope, const UnicodeString RawParams, bool &Handled)
{
  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, ML-DSA-44/65/87
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, sgcHTTP y sgcREST 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)
  • TOTP, LDAP, SAML, OpenID Connect y Mail OAuth2, vía sgcCustomIndy
  • 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+Desarrolladores
20+Años
761+Componentes
30+Integraciones de API
5Plataformas
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 →

sgcWebRTC

Motor WebRTC completo: llamadas de audio/vídeo, canales de datos y compartición de pantalla. Un complemento para sgcWebSockets Enterprise.

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 →

sgcCrypto

Cifrado simétrico y asimétrico, funciones hash y algoritmos post-cuánticos. Se incluye gratis desde sgcWebSockets Standard.

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 →