sgcAuth: componenti OAuth2, JWT e WebAuthn per Delphi e C++ Builder
Due componenti client portano il lato token dell'autenticazione moderna nella tua applicazione. TsgcHTTP_OAuth2_Client esegue i flussi Authorization Code, PKCE, Client Credentials, Resource Owner Password e Device Code contro qualsiasi provider OAuth2/OIDC. TsgcHTTP_JWT_Client crea, firma e verifica JSON Web Token, da solo o come sorgente del Bearer token per i tuoi client WebSocket e HTTP. Altri cinque componenti aggiungono i secondi fattori TOTP, l'accesso LDAP e Active Directory, il single sign-on SAML, OpenID Connect e OAuth2 per la posta. sgcAuth è autonomo, include il runtime sgcWebSockets Core su cui sono costruiti entrambi i client.
Runtime inclusosgcWebSockets CoreIl runtime HTTP, TLS e JSON sotto entrambi i client
OAuth2TsgcHTTP_OAuth2_Client
JWTTsgcHTTP_JWT_Client
GUARDALO IN AZIONE
Guarda sgcAuth in due minuti
OAuth2, JWT e passkey WebAuthn in Delphi e C++Builder, sul client e nel tuo server.
7ComponentiUna sola pagina nella palette dei componenti
9RFC implementateOAuth2, PKCE, DPoP, Device Code, JWT/JWS/JWE e altro
5PiattaformeWindows, macOS, Linux, iOS e Android
100%Codice sorgente inclusoEntrambi i client e il runtime Core incluso
12Mesi di aggiornamentiOgni versione pubblicata mentre la licenza è attiva
PRIMA DI ACQUISTARE
Tre cose che vale la pena sapere subito
Cosa richiede sgcAuth da te, se possiedi già questi componenti, e cosa serve in più per WebAuthn. Tutte e tre le risposte sono brevi.
sgcAuth è autosufficiente
Autonomo, include il runtime sgcWebSockets Core: lo stack client HTTP/TLS con cui entrambi i componenti effettuano le loro richieste di token, e le funzioni JSON con cui interpretano le risposte. Un solo SKU, un solo installer.
Il codice sorgente completo è incluso in ogni licenza, così entrambi i client e il runtime sotto di loro si possono seguire passo passo nel tuo debugger invece di sparire dentro un binario.
Sovrapposizione con le edizioni
Già nella tua edizione di sgcWebSockets?
Sia il client OAuth2 sia il client JWT sono inclusi in sgcWebSockets a partire dall'edizione Standard, quindi se possiedi una qualsiasi edizione di sgcWebSockets hai già entrambi i componenti. I componenti WebAuthn, TOTP, LDAP, SAML, OpenID Connect e Mail OAuth2 sono inclusi in Enterprise. All-Access include tutto.
sgcAuth esiste per il caso opposto: vuoi il supporto client OAuth2 e JWT in Delphi o C++ Builder senza acquistare la licenza di un'intera edizione di sgcWebSockets. Controlla cosa copre già la tua edizione prima di acquistare.
Componente aggiuntivo richiesto
WebAuthn richiede sgcCustomIndy
L'accesso passwordless con WebAuthn e passkey è servito da TsgcWSAPIServer_WebAuthn, un componente Enterprise/All-Access di sgcWebSockets costruito sulla libreria Indy modificata che sgcCustomIndy distribuisce come componente aggiuntivo. WebAuthn richiede il componente aggiuntivo sgcCustomIndy, che viene aggiunto automaticamente quando ordini sgcAuth. I componenti TOTP, LDAP, SAML, OpenID Connect e Mail OAuth2 sono sbloccati dallo stesso componente aggiuntivo.
Possiedi già una licenza sgcCustomIndy? Rimuovi la riga aggiunta automaticamente dal tuo carrello prima del pagamento, nessun costo extra in entrambi i casi.
COSA C'È NELLA CONFEZIONE
Client per i token, secondi fattori e single sign-on
Ognuno è un componente non visuale che metti su una form o crei da codice, dichiarato con il prefisso dell'unità sgc e registrato sulla pagina della palette SGC Auth. Imposta i dettagli del provider, aggancia gli eventi, poi chiama Start. I componenti TOTP, LDAP, SAML, OpenID Connect e Mail OAuth2 sono sbloccati insieme a sgcCustomIndy, come WebAuthn.
OAuth21 componente
Cinque grant type, un solo componente
TsgcHTTP_OAuth2_Client pilota OAuth2Options.GrantType attraverso auth2Code per applicazioni server-side affidabili, auth2CodePKCE per app native, mobile e single-page, auth2ClientCredentials per demoni e account di servizio, auth2ResourceOwnerPassword, e auth2DeviceCode (RFC 8628) per smart TV, chioschi e altri dispositivi con input limitato. Punta AuthorizationServerOptions sugli endpoint di autorizzazione, token, revoca e introspezione del provider e il componente fa il resto: quando Active/Start esegue il flusso Authorization Code, apre il browser di sistema e avvia un piccolo server HTTP locale da LocalServerOptions per intercettare il redirect, scambiando il codice con un token su HTTPS puro attraverso HTTPClientOptions. Refresh, Revoke e Introspect coprono il ciclo di vita del token da lì in poi, e DPoPOptions più GenerateDPoPKeyPair aggiungono la proof-of-possession DPoP (RFC 9449) per i provider che la richiedono. Preset già pronti per Google e Microsoft configurano gli endpoint e gli scope comuni al posto tuo.
TsgcHTTP_JWT_Client espone tutto ciò che serve alla RFC 7519 attraverso JWTOptions: l'header JOSE (alg, typ, kid), le claim registrate del Payload (iss, sub, aud, exp, nbf, iat, jti, più claim personalizzate tramite AddKeyValue), e il materiale della chiave sotto Algorithms per HMAC (HS.Secret), RSA (RS.PrivateKey) ed ECDSA (ES.PrivateKey). Chiama Sign per ottenere direttamente il token in serializzazione compatta, utile per servizi senza un client HTTP o WebSocket integrato, oppure imposta RefreshTokenAfter e lascia che il componente aggiorni iat/exp e rifirmi automaticamente. Lo stesso componente si collega direttamente ad Authentication.Token.JWT su TsgcWebSocketClient, TsgcHTTP1Client e TsgcHTTP2Client, così ogni richiesta in uscita porta un Bearer token aggiornato senza che tu debba toccare l'header.
Codici a due fattori, ciascuno accettato una sola volta
TsgcTOTPAuthenticator aggiunge al tuo accesso i codici a sei cifre di qualsiasi app authenticator, Google Authenticator e Microsoft Authenticator incluse. GenerateSecret crea un secret Base32 casuale e GetProvisioningURI costruisce l'URI otpauth:// che rendi come codice QR durante l'iscrizione. VerifyCode verifica quello che digita l'utente con una Window configurabile per lo sfasamento dell'orologio, e il suo overload con protezione dai replay non accetta mai due volte lo stesso step temporale. GenerateHOTP e VerifyHOTP coprono i token hardware basati sul contatore, GenerateRecoveryCodes riempie una lista di codici di riserva monouso, e Algorithm, Digits e Period selezionano HMAC-SHA1, HMAC-SHA256 o HMAC-SHA512 con codici da 6 a 8 cifre.
TsgcLDAPClient è un client LDAP v3 che verifica nomi utente e password su Active Directory o qualsiasi altra directory LDAP. Security seleziona LDAPS sulla porta 636 o StartTLS sulla porta 389, e uno StartTLS rifiutato chiude la connessione invece di ripiegare sul testo in chiaro. AuthenticationMode trasforma quanto digitato dall'utente in un bind name, come UPN, come nome DOMAIN\user, come DN completo, oppure come bind di servizio seguito da una ricerca con UserSearchFilter, e Authenticate esegue l'intera verifica in un'unica chiamata. GetUserGroups restituisce l'appartenenza diretta o annidata ai gruppi tramite LDAP_MATCHING_RULE_IN_CHAIN, Search pagina automaticamente i risultati numerosi, e ogni metodo pubblico è serializzato, così un'unica istanza può servire un server multi-thread.
TsgcSAMLServiceProvider trasforma la tua applicazione web Delphi in un service provider SAML 2.0 per Microsoft Entra ID, Okta, AD FS, Google Workspace, Keycloak e altri identity provider. GetMetadata produce i metadata che registri presso l'IdP e LoadIdPMetadata legge i suoi. GetAuthnRequestRedirectURL e GetAuthnRequestPostForm inviano il browser ad accedere tramite il binding Redirect o POST, e ProcessResponse convalida ciò che torna indietro: la firma solo rispetto agli IdPCertificates fidati, esattamente un'assertion per neutralizzare il signature wrapping, poi issuer, audience, destination, InResponseTo, la finestra di validità e una cache anti-replay. Il risultato arriva come un TsgcSAMLResult con il NameID, l'indice di sessione e gli attributi.
TsgcHTTP_OIDC_Client estende il client OAuth2 con OpenID Connect. Imposta OIDCOptions.Issuer e Discover popola gli endpoint e il JWKSURI a partire dalla configurazione del provider. Start esegue l'accesso via browser con PKCE e un nonce nuovo, poi convalida firma, issuer, audience, scadenza e nonce dell'ID token, accettando solo RS256, RS384, RS512, ES256 ed ES384 e mai none o gli algoritmi HS. OnOIDCIDToken consegna i claim, GetUserInfo restituisce il profilo, e una cache di chiavi thread safe segue la rotazione delle chiavi senza bisogno di un riavvio. Lato server, sgcOIDC_ValidateIDToken verifica i bearer token ricevuti dalla tua REST API o dal server WebSocket rispetto alla stessa cache.
TsgcMailOAuth2 ottiene i token richiesti da Microsoft 365 e Gmail per la posta. Scegli Provider (mopMicrosoft365, mopGmail o mopCustom) e i Protocols che usi, e il componente richiede gli scope corrispondenti. Flow esegue l'accesso via browser con PKCE e un loopback redirect, oppure il flusso device code per servizi e console. Refresh rinnova l'access token e OnTokensChanged viene generato ogni volta, così puoi salvare il nuovo refresh token. GetXOAuth2 e GetOAuthBearer restituiscono le stringhe SASL per AUTH XOAUTH2 e AUTH OAUTHBEARER, pronte per Indy TIdSMTP, TIdIMAP4 e TIdPOP3 o qualsiasi altra libreria di posta.
TsgcMailOAuth2RFC 7628 · XOAUTH2 · Microsoft 365 · Gmail
CASI D'USO
Flussi di autenticazione da codice Delphi
Entrambi i componenti sono normali componenti non visuali, quindi si inseriscono in qualsiasi cosa sia già la tua applicazione: un'app desktop VCL, un servizio Windows, un demone Linux. Questi sono gli schemi che i clienti costruiscono, ciascuno mappato sulla proprietà o sul metodo che lo pilota.
SI
Accedi con Google o Microsoftauth2CodePKCE
Preset già pronti per Google e Microsoft configurano gli endpoint di autorizzazione e token e gli scope al posto tuo.
M2
Accesso API da server a serverauth2ClientCredentials
Job in background e account di servizio si autenticano a un'API senza un utente nel mezzo.
TV
Smart TV, chioschi e dispositivi IoTauth2DeviceCode
Il dispositivo mostra un codice breve, l'utente completa l'accesso dal telefono o dal portatile.
RF
Sessioni lunghe senza richiedere di nuovo l'accessoRefresh
Scambia un refresh token con un nuovo access token dietro le quinte, senza passare di nuovo dal browser.
WS
Autentica le tue API WebSocket e HTTPAuthentication.Token.JWT
Il client JWT firma i Bearer token per TsgcWebSocketClient, TsgcHTTP1Client e TsgcHTTP2Client automaticamente.
SG
Firma di token indipendenteSign
Crea e firma una stringa JWT per qualsiasi codebase, senza bisogno di un componente WebSocket o HTTP.
COME FUNZIONA
Un passaggio al browser, una firma e un runtime incluso
OAuth2 e JWT risolvono problemi diversi, uno negozia un token con un server remoto, l'altro ne firma uno localmente, ed è proprio questo il senso di raggrupparli insieme: sgcAuth nasconde la differenza dietro le stesse convenzioni dei componenti, con il runtime sgcWebSockets Core incluso che fa da impianto idraulico sotto.
OAuth2 è un passaggio al browser, poi HTTPS puro
Start apre il browser di sistema (o, per Device Code, ti consegna il codice utente da mostrare) e un listener HTTP locale da LocalServerOptions intercetta il redirect di autorizzazione. Lo scambio per l'access token è una POST HTTPS pura effettuata attraverso HTTPClientOptions, sullo stack client HTTP del runtime Core.
JWT è firma, non rete
TsgcHTTP_JWT_Client non apre mai un socket. JWTOptions configura l'header, il payload e il materiale della chiave, e Sign restituisce il token in serializzazione compatta, HMAC, RSA o ECDSA, pronto da allegare a qualsiasi richiesta che il tuo codice invia.
Il runtime Core è nella confezione
Autonomo, include il runtime sgcWebSockets Core. Contribuisce lo stack client HTTP/TLS attraverso cui entrambi i componenti effettuano le loro POST e il parser JSON che legge le risposte, e il suo codice sorgente completo fa parte della confezione come tutto il resto.
WebAuthn è il terzo pezzo, tramite sgcCustomIndy
L'accesso passwordless è gestito da TsgcWSAPIServer_WebAuthn, un componente server Enterprise/All-Access di sgcWebSockets che richiede la build Indy modificata che sgcCustomIndy distribuisce. Ordinare sgcAuth aggiunge sgcCustomIndy al tuo carrello automaticamente.
GUIDA RAPIDA
Ottieni un token, firma un token
Entrambi i componenti seguono la stessa struttura: configura le opzioni, poi chiama un metodo. Compilano in Delphi 7-13 e in C++ Builder, e le stesse proprietà sono esposte su .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;
Lo stesso componente JWT si collega direttamente a un client WebSocket o HTTP: imposta Client.Authentication.Token.Enabled := True e Client.Authentication.Token.JWT := JWT, e ogni richiesta parte con un Bearer token aggiornato.
// 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.");
}
Lo stesso componente JWT si collega direttamente a un client WebSocket o HTTP: imposta Client->Authentication->Token->Enabled = true e Client->Authentication->Token->JWT = JWT, e ogni richiesta parte con un Bearer token aggiornato.
PIATTAFORME
HTTPS puro e firma, nessuna libreria nativa
Nessuno dei due componenti dipende da altro oltre allo stack client HTTP del runtime Core e alle primitive crittografiche della piattaforma, quindi entrambi compilano e girano ovunque compili Delphi.
sgcAuth viene concesso in licenza da solo, a partire da €149 per un singolo sviluppatore. Tutte le licenze includono il codice sorgente completo, 1 anno di aggiornamenti e uno sconto sul rinnovo dal 50% al 70%: il 50% se rinnovi un pacchetto, il 60% con due, il 70% con tre o più. sgcAI, sgcMQ, sgcSocial, sgcCustomIndy, sgcAuth, sgcHTTP e sgcREST contano ciascuno come un pacchetto.
Il pagamento elenca due voci: il diritto d'uso del runtime sgcWebSockets Core, addebitato a zero, e il pacchetto sgcAuth stesso. sgcCustomIndy viene aggiunto automaticamente per WebAuthn, rimuovilo se lo possiedi già. Tutti i dettagli sui prezzi.
3,000+Sviluppatori
20+Anni
761+Componenti
30+Integrazioni API
5Piattaforme
Garanzia soddisfatti o rimborsati di 30 giorniNon sei soddisfatto? Richiedi un rimborso completo entro 30 giorni dall'acquisto. Vedi la politica di rimborso
Distribuisci l'autenticazione, non una libreria di token
OAuth2 e JWT da codice nativo Delphi e C++ Builder, con il runtime incluso e il codice sorgente completo nella confezione. Scarica l'installer di prova All-Access e metti subito entrambi i componenti su una form.
Motore multimediale WebRTC completo: chiamate audio/video, canali dati e condivisione dello schermo. Un componente aggiuntivo per sgcWebSockets Enterprise.
La libreria Indy personalizzata su cui è costruito sgcWebSockets Enterprise, distribuita come componente aggiuntivo. Richiesto per WebAuthn, aggiunto automaticamente agli ordini di sgcAuth.