sgcAuth: matriz de características

Todo lo que hace sgcAuth, repartido entre los dos componentes cliente, los tipos de grant y los claims que implementan, y los componentes WebAuthn, TOTP, LDAP, SAML, OpenID Connect y Mail OAuth2 que el pack desbloquea junto con sgcCustomIndy. Cada capacidad funciona igual en Delphi y en C++ Builder, y todas las licencias incluyen el código fuente completo.

OAuth2

Cinco tipos de grant, un componente

JWT

Firma, adjunta o verifica

WebAuthn

Passkeys, vía sgcCustomIndy

TOTP

Códigos de segundo factor y códigos de recuperación

LDAP

Inicio de sesión en Active Directory por TLS

SAML

Single sign-on SAML 2.0

OpenID Connect

Inicio de sesión con validación de ID token

Mail OAuth2

OAuth2 para SMTP, IMAP y POP3

Estándares y plataformas

Delphi 7 a 13, C++ Builder

sgcAuth es autocontenido. Se entrega con el runtime sgcWebSockets Core incluido, así que no es un add-on para los clientes OAuth2 y JWT.

También dentro de sgcWebSockets. Tanto el cliente OAuth2 como el cliente JWT también se entregan dentro de las ediciones de sgcWebSockets desde Standard en adelante. All-Access lo incluye todo. sgcAuth es el paquete independiente para los equipos que solo necesitan los clientes de autenticación.

Siete componentes de paleta

Dos clientes de token y cinco componentes de identidad, registrados en la página de paleta SGC Auth.

ComponenteClaseFunciónDescripción
Cliente OAuth2TsgcHTTP_OAuth2_ClientObtener un tokenGrants Authorization Code, PKCE, Client Credentials, Resource Owner Password y Device Code contra cualquier proveedor OAuth2/OIDC, con un servidor de redirección local incorporado.
Cliente JWTTsgcHTTP_JWT_ClientFirmar un tokenConstruye, firma y verifica JSON Web Tokens, de forma independiente o como fuente del token Bearer para TsgcWebSocketClient, TsgcHTTP1Client y TsgcHTTP2Client.
TOTP AuthenticatorTsgcTOTPAuthenticatorComprobar un segundo factorSecretos TOTP y HOTP, aprovisionamiento QR otpauth, verificación de códigos con protección contra repetición, y códigos de recuperación de un solo uso.
LDAP ClientTsgcLDAPClientComprobar una contraseña de directorioInicio de sesión LDAP v3 y Active Directory por LDAPS o StartTLS, pertenencia a grupos anidados y búsqueda paginada.
SAML Service ProviderTsgcSAMLServiceProviderSingle sign-onProveedor de servicios SAML 2.0 para Entra ID, Okta, AD FS, Google Workspace y Keycloak, con validación estricta de firma y assertion.
OpenID Connect ClientTsgcHTTP_OIDC_ClientIniciar sesión de un usuarioDiscovery, inicio de sesión en el navegador con PKCE y nonce, validación del ID token contra las claves del proveedor, y el endpoint userinfo.
Mail OAuth2TsgcMailOAuth2Autenticar correoTokens de acceso y refresco para Microsoft 365 y Gmail, además de las cadenas SASL XOAUTH2 y OAUTHBEARER para SMTP, IMAP y POP3.

Cinco tipos de grant, un componente

TsgcHTTP_OAuth2_Client cubre OAuth 2.0 (RFC 6749) de principio a fin: inicia el flujo, captura la redirección, intercambia el código por un token y gestiona el token después.

CapacidadAPINotas
Authorization CodeOAuth2Options.GrantType := auth2CodeEl flujo estándar para aplicaciones web de servidor de confianza que pueden guardar un client secret.
Authorization Code + PKCEauth2CodePKCE (RFC 7636)El mismo flujo con un Proof Key for Code Exchange, para aplicaciones nativas, móviles y de una sola página que no pueden guardar un secreto.
Client Credentialsauth2ClientCredentialsLlamadas servidor a servidor sin ningún usuario de por medio: daemons y cuentas de servicio.
Resource Owner Passwordauth2ResourceOwnerPasswordLa aplicación recoge la contraseña del usuario directamente y la intercambia por un token.
Device Codeauth2DeviceCode (RFC 8628)Para dispositivos con entrada limitada, smart TVs, consolas multimedia, IoT: muestra un código de usuario que la persona introduce en un segundo dispositivo.
Identidad del clienteOAuth2Options.ClientId, ClientSecret, Username, PasswordConfigúralo según la especificación de la API de tu proveedor; Username/Password cubren los proveedores que requieren Basic Authentication en el endpoint de token.
Endpoints del proveedorAuthorizationServerOptions.AuthURL, TokenURL, Scope, RevocationURL, IntrospectionURLLas URLs y la lista de scopes publicadas en la documentación OAuth2/OIDC de tu proveedor.
Presets socialesTsgcHTTP_OAuth2_Client_Google, TsgcHTTP_OAuth2_Client_MicrosoftDescendientes ya preparados que preconfiguran los endpoints y scopes de Google y Microsoft.
Listener de redirección localLocalServerOptions.IP, Port, RedirectURLEl pequeño servidor HTTP que el componente inicia para recibir la redirección del código de autorización; usa el puerto 8080 por defecto, o 0 para elegir un puerto aleatorio en aplicaciones de escritorio.
Ejecutar el flujoStart, StopStart abre el navegador del sistema (o emite el device code) e inicia el grant configurado; Stop lo aborta y cierra el listener local.
RefreshRefreshIntercambia un refresh token por un nuevo access token sin otro viaje de ida y vuelta por el navegador.
Revoke e introspectRevoke (RFC 7009), Introspect (RFC 7662)Invalida un token, o consulta su estado y metadatos en el proveedor.
DPoPDPoPOptions, GenerateDPoPKeyPair, OnDPoPSignMaterial de clave y firma para Demonstrating Proof-of-Possession (RFC 9449), para proveedores que vinculan los tokens a un par de claves.
Transporte HTTPHTTPClientOptionsConfiguración de TLS y registro para el cliente HTTP interno que envía peticiones POST a los endpoints de token, revocación e introspección.
Eventos del ciclo de vidaOnBeforeAuthorizeCode, OnAfterAuthorizeCode, OnBeforeAccessToken, OnAfterAccessToken, OnBeforeRefreshToken, OnAfterRefreshTokenPares antes/después alrededor de cada paso del flujo.
Eventos de errorOnErrorAccessToken, OnErrorAuthorizeCode, OnErrorRefreshToken, OnErrorRevokeToken, OnErrorIntrospectTokenUno por cada punto de fallo del flujo, cada uno con el error, la descripción y la URI del proveedor.
Eventos de Device CodeOnDeviceCode, OnDeviceCodeExpiredEntrega el código de usuario y la URI de verificación para mostrar, y se dispara si el usuario no completa la autorización a tiempo.

Firma, adjunta o verifica

TsgcHTTP_JWT_Client implementa RFC 7519 (JSON Web Token), RFC 7515 (JWS) y RFC 7516 (JWE) a través de una única propiedad JWTOptions.

CapacidadAPINotas
CabeceraJWTOptions.Header.alg, typ, kidLa cabecera JOSE. alg selecciona jwtHS256/384/512, jwtRS256/384/512, jwtES256/384/512 o los poscuánticos jwtMLDSA44/jwtMLDSA65/jwtMLDSA87; los campos adicionales se añaden a través de Header.AddKeyValue.
Payload / claimsJWTOptions.Payload.iss, sub, aud, exp, nbf, iat, jtiLos claims registrados de RFC 7519; los claims personalizados se añaden con Payload.AddKeyValue.
Material de clave de firmaJWTOptions.Algorithms.HS.Secret, RS.PrivateKey, ES.PrivateKey, MLDSA.PrivateKeySecreto compartido para HMAC, clave privada codificada en PEM para RSA o ECDSA, PEM PKCS#8 para ML-DSA, seleccionada por Header.alg.
Firmas poscuánticasjwtMLDSA44, jwtMLDSA65, jwtMLDSA87Los algoritmos JWS de ML-DSA del RFC 9964, implementados en Pascal puro, así que en esta ruta no interviene OpenSSL. El cliente firma con JWTOptions.Algorithms.MLDSA.PrivateKey, un PEM PKCS#8; un servidor verifica con JWTOptions.Algorithms.MLDSA.PublicKey, un PEM SubjectPublicKeyInfo, una vez establecido JWTOptions.Algorithms.MLDSA.Enabled.
Claves web JSON de ML-DSAsgcMLDSA_ExportPublicJWK, sgcMLDSA_ExportPrivateJWK, sgcMLDSA_ImportJWK, sgcMLDSA_ImportJWKAsPEMClaves web JSON de tipo AKP, para publicar una clave ML-DSA en un JWKS o leer una de un proveedor.
Auto-refrescoJWTOptions.RefreshTokenAfterCuando es mayor que cero, Sign refresca iat y recalcula exp automáticamente; 0 regenera el token en cada petición.
Firmar de forma independienteSignConstruye, firma y devuelve el token codificado (header.payload.signature) como una única cadena, sin necesidad de un cliente HTTP o WebSocket.
Adjuntar a un clienteStart, Client.Authentication.Token.JWTStart firma el JWT configurado y lo entrega como token Bearer al componente host; configúralo una vez en Authentication.Token.JWT y cada petición sale firmada.
Funciona conTsgcWebSocketClient, TsgcHTTP1Client, TsgcHTTP2ClientCualquiera de los tres acepta un TsgcHTTP_JWT_Client como su fuente de token Bearer a través de Authentication.Token.
Configuración de OpenSSLJWTOptions.OpenSSL_OptionsVersión de API y ruta de librería usadas por los algoritmos RS y ES (APIVersion, LibPath, LibPathCustom, UnixSymLinks).

Inicio de sesión sin contraseña, con una pieza más

WebAuthn forma parte de la historia de sgcAuth, pero no es un tercer componente registrado en este pack. Lo sirve el servidor WebAuthn de sgcWebSockets, y necesita sgcCustomIndy por debajo.

ÁreaDetalle
Qué esW3C Web Authentication Level 2 (WebAuthn): inicio de sesión sin contraseña con passkeys y llaves de seguridad FIDO2, respaldado por TsgcWSAPIServer_WebAuthn.
Dónde viveTsgcWSAPIServer_WebAuthn es un componente del lado del servidor, parte de sgcWebSockets Enterprise y All-Access, no un cliente registrado por este pack.
Qué necesitaLa compilación Indy parcheada que sgcCustomIndy entrega como add-on para sgcWebSockets Core.
Cómo se añadeLa página de pedido añade sgcCustomIndy a tu carrito automáticamente cuando pides sgcAuth. ¿Ya tienes una licencia? Elimina la línea al pagar, no hay coste extra en ningún caso.
Lado del clienteUna aplicación JavaScript del lado del navegador dirige la ceremonia WebAuthn; sgcHTML incluye un componente de UI de inicio de sesión WebAuthn ya preparado que se combina con el servidor.
PasskeysInicio de sesión sin nombre de usuario con credenciales detectables, autocompletado de passkeys mediante mediación condicional, varias passkeys por usuario, detección de sincronizadas o vinculadas al dispositivo a través de BackupEligible y BackupState, y detección de autenticadores clonados.

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

TsgcTOTPAuthenticator implementa TOTP (RFC 6238) y HOTP (RFC 4226), los códigos que muestran Google Authenticator, Microsoft Authenticator y el resto de aplicaciones de autenticación.

CapacidadAPINotas
SecretosGenerateSecret, SecretLengthUn secreto Base32 aleatorio, de 20 bytes por defecto, para guardar junto al registro del usuario.
Aprovisionamiento QRGetProvisioningURI, IssuerConstruye la URI otpauth://totp/ con el issuer, el algoritmo, los dígitos y el período, lista para representarse como código QR.
Verificar un códigoVerifyCode, WindowAcepta el paso de tiempo actual y Window pasos antes o después, 1 por defecto, para que un reloj de teléfono con unos segundos de desfase siga permitiendo el inicio de sesión.
Protección contra repeticiónVerifyCode con aLastTimeStepSolo acepta un paso de tiempo mayor que el último utilizado y devuelve el paso coincidente, de modo que un código nunca puede usarse dos veces.
Contadores HOTPGenerateHOTP, VerifyHOTPLa variante basada en contador para tokens hardware, con una ventana de anticipación que resincroniza el contador cuando la verificación tiene éxito.
Códigos de recuperaciónGenerateRecoveryCodesRellena cualquier TStrings con códigos únicos de un solo uso, el respaldo para cuando el usuario pierde el dispositivo.
Algoritmos y dígitosAlgorithm, Digits, PeriodHMAC-SHA1, el valor por defecto que soportan todas las apps, HMAC-SHA256 o HMAC-SHA512, con códigos de 6 a 8 dígitos y cualquier período.

Inicio de sesión en Active Directory por TLS

TsgcLDAPClient es un cliente LDAP v3 (RFC 4511) que autentica usuarios contra Active Directory o cualquier otro directorio LDAP y lee sus grupos.

CapacidadAPINotas
ConexiónHost, Connect, BindDN, Password, BaseDNEl servidor de directorio, la cuenta de servicio usada para las búsquedas, y la base de las búsquedas de usuarios y grupos.
LDAPS y StartTLSSecurity, TLSOptionsldapsecLDAPS para TLS implícito en el puerto 636 o ldapsecStartTLS en el puerto 389. Si se rechaza StartTLS, la conexión se cierra: el cliente nunca cae de vuelta a texto plano.
Modos de inicio de sesiónAuthenticationMode, UserSearchFilterldapamUPN, ldapamDownLevel, ldapamSearchThenBind o ldapamDN convierten el nombre introducido en el nombre de bind.
AutenticarAuthenticateComprueba el nombre de usuario y la contraseña en una sola llamada y devuelve el DN del usuario.
Grupos anidadosGetUserGroupsLos valores memberOf directos, o todos los grupos alcanzados a través de otros grupos con la regla de Active Directory LDAP_MATCHING_RULE_IN_CHAIN.
Búsqueda paginadaSearch, PageSize, SizeLimit, TimeLimitSimple Paged Results se usa automáticamente, 500 entradas por página por defecto, y las entradas y referrals se devuelven en una lista TsgcLDAPEntries.
Binds segurosBind, WhoAmI, LastResultCode, LastErrorMessageUn DN con contraseña vacía se rechaza sin contactar con el servidor, cerrando el agujero de bind no autenticado del RFC 4513.
HilosCada método públicoLas llamadas se serializan, de modo que una única instancia puede atender las peticiones de inicio de sesión de un servidor HTTP o WebSocket multihilo.

Single sign-on SAML 2.0

TsgcSAMLServiceProvider convierte una aplicación web Delphi en un proveedor de servicios SAML 2.0 para Microsoft Entra ID, Okta, AD FS, Google Workspace, Keycloak y otros proveedores de identidad.

CapacidadAPINotas
Identidad del proveedor de serviciosEntityID, AssertionConsumerServiceURLEl entity ID y la URL ACS que recibe las respuestas enviadas por el navegador.
Metadatos en ambos sentidosGetMetadata, LoadIdPMetadataGetMetadata genera los metadatos del SP para registrarlos en el IdP. LoadIdPMetadata rellena IdPEntityID, IdPSSOURL, IdPSSOBinding e IdPCertificates.
Bindings Redirect y POSTGetAuthnRequestRedirectURL, GetAuthnRequestPostFormLa URL HTTP-Redirect con el AuthnRequest comprimido, o un formulario HTTP-POST que se autoenvía.
Peticiones firmadasSignAuthnRequests, SPCertificate, SPPrivateKeyFirma el AuthnRequest para los proveedores de identidad que lo requieren.
Solo claves de confianzaIdPCertificates, AllowSHA1Las firmas se comprueban únicamente contra los certificados de IdP configurados, nunca contra un certificado embebido en el mensaje. RSA-SHA256, RSA-SHA384 y RSA-SHA512 con canonicalización exclusiva, SHA-1 solo cuando se permite.
Protección contra signature wrappingProcessResponseLa respuesta debe contener exactamente una assertion como hijo directo, y la firma debe referenciar ese elemento.
Comprobaciones de la assertionClockSkew, MaxAssertionAge, AllowIdPInitiatedSe validan el issuer, la audience, el destination, InResponseTo y la ventana de validez, con una caché de repetición de IDs de assertion. El inicio de sesión iniciado por el IdP permanece desactivado hasta que se habilita.
ResultadoTsgcSAMLResultNameID, NameIDFormat, SessionIndex, AuthnInstant, los Attributes con sus nombres descriptivos, y un ErrorMessage legible.

Inicia sesión con cualquier proveedor OpenID

TsgcHTTP_OIDC_Client implementa OpenID Connect Core 1.0 sobre el cliente OAuth2, así que la redirección loopback, los refresh tokens, DPoP, el device code, la revocación y la introspección vienen incluidos.

CapacidadAPINotas
DiscoveryOIDCOptions.Issuer, Discover, DiscoveryDocumentLee la configuración del proveedor y rellena las URLs de authorization y token, JWKSURI, UserInfoEndpoint y EndSessionEndpoint.
Iniciar sesiónStartAbre el navegador y ejecuta el flujo Authorization Code a través del servidor de redirección local del cliente OAuth2.
PKCE y nonceOIDCOptions.UsePKCE, NoncePKCE está activado por defecto y cada inicio de sesión envía un nonce nuevo que el ID token debe reflejar.
Validación del ID tokenIDToken, IDTokenClaims, IDTokenValid, OnOIDCIDTokenSe comprueban la firma, el issuer, la audience, la caducidad con ClockSkew y el nonce. Solo se aceptan RS256, RS384, RS512, ES256 y ES384; none y los algoritmos HS se rechazan siempre.
Rotación de clavesTsgcOIDCJWKS, RefetchIntervalUna caché segura para hilos de las claves de firma del proveedor. Un key id desconocido dispara una nueva descarga, así que la rotación de claves no necesita reinicio.
Validación en el servidorsgcOIDC_ValidateIDToken, OIDCOptions.AllowedTenantsValida los tokens Bearer que recibe tu API REST o tu servidor WebSocket contra la misma caché de claves, y restringe las aplicaciones multi-tenant de Entra ID a las organizaciones que aceptas.
UserinfoGetUserInfoDevuelve el JSON de perfil del usuario que ha iniciado sesión.

OAuth2 para SMTP, IMAP y POP3

TsgcMailOAuth2 obtiene y renueva los tokens que Microsoft 365 y Gmail esperan para el correo, y los convierte en las cadenas SASL XOAUTH2 y OAUTHBEARER (RFC 7628) que envía tu cliente de correo.

CapacidadAPINotas
Presets de proveedorProvider, TenantId, ClientIdmopMicrosoft365 o mopGmail con los endpoints correctos. mopCustom acepta CustomAuthURL, CustomTokenURL, CustomDeviceAuthorizationURL y CustomScope.
Scopes según los protocolosProtocols, GetScopeCualquier combinación de mpSMTP, mpIMAP y mpPOP3 solicita los scopes correspondientes, con offline_access en Microsoft 365.
Navegador o device codeFlow, LocalServerOptions, OnDeviceCodemofAuthorizationCodePKCE abre el navegador con una redirección loopback, mofDeviceCode encaja en servicios y consolas.
Ciclo de vida del tokenStart, Refresh, AccessToken, RefreshToken, ExpiresAt, OnTokensChangedRefresh renueva el access token de forma síncrona y OnTokensChanged se dispara cada vez, para que puedas persistir el nuevo refresh token.
Cadenas SASLGetXOAuth2, GetOAuthBearerLas respuestas iniciales en Base64 para AUTH XOAUTH2 y AUTH OAUTHBEARER. Las variantes Raw y las funciones sgcGetXOAuth2 ayudan con la depuración y otras fuentes de token.
Agnóstico de transporteHTTPClientOptionsEl componente nunca abre una conexión de correo. Usa Indy TIdSMTP, TIdIMAP4 o TIdPOP3, o cualquier librería de correo capaz de enviar un comando SASL en bruto.

RFCs, compiladores y objetivos

Especificaciones estándar, y el mismo código fuente en todos los compiladores compatibles.

ÁreaDetalle
Estándares OAuth2OAuth 2.0 (RFC 6749), PKCE (RFC 7636), Device Authorization Grant (RFC 8628), Token Revocation (RFC 7009), Token Introspection (RFC 7662), DPoP (RFC 9449).
Estándares JWTJSON Web Token (RFC 7519), JSON Web Signature (RFC 7515), JSON Web Encryption (RFC 7516), ML-DSA para JOSE (RFC 9964).
Estándar WebAuthnWeb Authentication Level 2 (W3C), a través del servidor WebAuthn de sgcWebSockets.
Estándares de identidadTOTP (RFC 6238), HOTP (RFC 4226), LDAP v3 (RFC 4511), SAML 2.0 (OASIS), OpenID Connect Core 1.0, SASL OAUTHBEARER (RFC 7628) y XOAUTH2.
PlataformasLos dos clientes son HTTPS puro y firma local, así que cubren todas las plataformas de Delphi: Windows Win32/Win64, Linux de 64 bits, macOS, iOS y Android.
CompiladoresDelphi y C++ Builder 7 a 13.
EdicionesEl cliente OAuth2 y el cliente JWT también se entregan dentro de sgcWebSockets desde Standard en adelante, los componentes WebAuthn, TOTP, LDAP, SAML, OpenID Connect y Mail OAuth2 en Enterprise, y All-Access lo incluye todo.
LicenciasIndependiente. El runtime sgcWebSockets Core viene incluido y se entrega el código fuente completo.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

Desarrolla con sgcAuth

Descarga la prueba gratuita y consigue tu primer access token o JWT firmado desde Delphi o C++ Builder.