Matriz de características de sgcAuth: OAuth2, JWT y WebAuthn | eSeGeCe

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 la capacidad WebAuthn 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

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.

Dos componentes de paleta

Dos caras del mismo problema, registradas 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.

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 o jwtES256/384/512; 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.PrivateKeySecreto compartido para HMAC, clave privada codificada en PEM para RSA o ECDSA, seleccionada por Header.alg.
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.

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).
Estándar WebAuthnWeb Authentication Level 2 (W3C), a través del servidor WebAuthn de sgcWebSockets.
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, 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.