sgcAuth: OAuth2-, JWT- & WebAuthn-componenten voor Delphi & C++ Builder
Twee clientcomponenten brengen de tokenkant van moderne authenticatie naar je toepassing. TsgcHTTP_OAuth2_Client doorloopt de Authorization Code-, PKCE-, Client Credentials-, Resource Owner Password- en Device Code-grants tegen elke OAuth2/OIDC-provider. TsgcHTTP_JWT_Client bouwt, ondertekent en verifieert JSON Web Tokens, op zichzelf of als de Bearer-tokenbron voor je WebSocket- en HTTP-clients. Vijf extra componenten voegen TOTP-tweede-factoren, LDAP- en Active Directory-login, SAML-single sign-on, OpenID Connect en OAuth2 voor mail toe. sgcAuth is standalone, het levert de sgcWebSockets Core runtime mee waarop beide clients gebouwd zijn.
Meegeleverde runtimesgcWebSockets CoreDe HTTP-, TLS- en JSON-runtime onder beide clients
OAuth2TsgcHTTP_OAuth2_Client
JWTTsgcHTTP_JWT_Client
ZIE HET IN ACTIE
Bekijk sgcAuth in twee minuten
OAuth2, JWT en WebAuthn-passkeys in Delphi en C++Builder, aan de clientkant en in je eigen server.
7ComponentenEén pagina op het componentenpalet
9Geïmplementeerde RFC'sOAuth2, PKCE, DPoP, Device Code, JWT/JWS/JWE en meer
5PlatformsWindows, macOS, Linux, iOS en Android
100%Broncode inbegrepenBeide clients en de meegeleverde Core runtime
12Maanden updatesElke release die verschijnt zolang je licentie actief is
Voordat je koopt
Drie dingen die je eerst moet weten
Wat sgcAuth van je nodig heeft, of je deze componenten al bezit, en wat WebAuthn daar bovenop nodig heeft. Alle drie antwoorden zijn kort.
sgcAuth is zelfstandig
Standalone, de sgcWebSockets Core runtime is inbegrepen: de HTTP/TLS-clientstack waarmee beide componenten hun tokenrequests versturen, en de JSON-machinerie die de antwoorden parseert. Eén SKU, één installer.
Bij elke licentie krijg je de volledige broncode, zodat je door beide clients en de runtime eronder heen kunt stappen in je eigen debugger in plaats van ze in een binary te zien verdwijnen.
Editie-overlap
Al in jouw sgcWebSockets-editie?
Zowel de OAuth2 Client als de JWT Client zitten in sgcWebSockets vanaf de Standard-editie, dus als je een sgcWebSockets-editie bezit heb je beide componenten al. De componenten WebAuthn, TOTP, LDAP, SAML, OpenID Connect en Mail OAuth2 zitten in Enterprise. All-Access bevat alles.
sgcAuth bestaat voor het omgekeerde geval: je wilt OAuth2- en JWT-clientondersteuning in Delphi of C++ Builder zonder een volledige sgcWebSockets-editie te licentiëren. Controleer wat jouw editie al dekt voordat je koopt.
Add-on vereist
WebAuthn heeft sgcCustomIndy nodig
Wachtwoordloos aanmelden met WebAuthn en passkeys wordt geleverd door TsgcWSAPIServer_WebAuthn, een sgcWebSockets Enterprise/All-Access-component gebouwd op de gepatchte Indy-bibliotheek die sgcCustomIndy als add-on levert. WebAuthn vereist de sgcCustomIndy-add-on, die automatisch wordt toegevoegd wanneer je sgcAuth bestelt. De componenten TOTP, LDAP, SAML, OpenID Connect en Mail OAuth2 worden door dezelfde add-on ontgrendeld.
Heb je al een sgcCustomIndy-licentie? Verwijder de automatisch toegevoegde regel uit je winkelmandje voordat je afrekent, in beide gevallen zonder extra kosten.
Wat er in de doos zit
Tokenclients, tweede factoren en single sign-on
Elk is een niet-visueel component dat je op een formulier zet of in code aanmaakt, gedeclareerd onder het sgc-unitprefix en geregistreerd op de paletpagina SGC Auth. Stel de providergegevens in, koppel de events en roep dan Start aan. De componenten TOTP, LDAP, SAML, OpenID Connect en Mail OAuth2 worden samen met sgcCustomIndy ontgrendeld, net als WebAuthn.
OAuth21 component
Vijf granttypes, één component
TsgcHTTP_OAuth2_Client stuurt OAuth2Options.GrantType via auth2Code voor vertrouwde server-side toepassingen, auth2CodePKCE voor native, mobiele en single-page apps, auth2ClientCredentials voor daemons en serviceaccounts, auth2ResourceOwnerPassword, en auth2DeviceCode (RFC 8628) voor smart-tv's, kiosken en andere invoerbeperkte apparaten. Richt AuthorizationServerOptions op de authorize-, token-, revocation- en introspection-endpoints van de provider, en het component regelt de rest: wanneer Active/Start de Authorization Code-flow doorloopt, opent het de systeembrowser en zet het een kleine lokale HTTP-server op vanuit LocalServerOptions om de redirect op te vangen, waarna de code via gewone HTTPS door HTTPClientOptions wordt ingewisseld voor een token. Refresh, Revoke en Introspect dekken de tokenlevenscyclus daarna, en DPoPOptions plus GenerateDPoPKeyPair voegen DPoP proof-of-possession (RFC 9449) toe voor providers die dat vereisen. Kant-en-klare presets voor Google en Microsoft configureren de gangbare endpoints en scopes voor je.
TsgcHTTP_JWT_Client ontsluit alles wat RFC 7519 nodig heeft via JWTOptions: de JOSE-Header (alg, typ, kid), de geregistreerde Payload-claims (iss, sub, aud, exp, nbf, iat, jti, plus custom claims via AddKeyValue), en het sleutelmateriaal onder Algorithms voor HMAC (HS.Secret), RSA (RS.PrivateKey) en ECDSA (ES.PrivateKey). Roep Sign aan om het token in compact-serialisatie direct terug te krijgen, handig voor diensten zonder ingebouwde HTTP- of WebSocket-client, of stel RefreshTokenAfter in en laat het component iat/exp automatisch vernieuwen en opnieuw ondertekenen. Hetzelfde component sluit rechtstreeks aan op Authentication.Token.JWT op TsgcWebSocketClient, TsgcHTTP1Client en TsgcHTTP2Client, zodat elk uitgaand request een vers Bearer-token meekrijgt zonder dat jij de header zelf aanraakt.
Tweede-factor-codes, elk maar één keer geaccepteerd
TsgcTOTPAuthenticator voegt de zescijferige codes van elke authenticator-app toe aan je aanmelding, Google Authenticator en Microsoft Authenticator inbegrepen. GenerateSecret maakt een willekeurig Base32-secret aan en GetProvisioningURI bouwt de otpauth://-URI die je als QR-code toont tijdens registratie. VerifyCode controleert wat de gebruiker invoert met een instelbare Window voor klokverschil, en de replay-veilige overload accepteert nooit tweemaal dezelfde tijdstap. GenerateHOTP en VerifyHOTP dekken tellergebaseerde hardwaretokens, GenerateRecoveryCodes vult een lijst met eenmalige herstelcodes, en Algorithm, Digits en Period kiezen HMAC-SHA1, HMAC-SHA256 of HMAC-SHA512 met codes van 6 tot 8 cijfers.
TsgcLDAPClient is een LDAP v3-client die gebruikersnamen en wachtwoorden controleert tegen Active Directory of elke andere LDAP-directory. Security kiest LDAPS op poort 636 of StartTLS op poort 389, en een geweigerde StartTLS sluit de verbinding in plaats van terug te vallen op leesbare tekst. AuthenticationMode zet wat de gebruiker invoerde om in een bind-naam, als UPN, als DOMAIN\gebruiker-naam, als volledige DN, of als een service-bind gevolgd door een zoekopdracht met UserSearchFilter, en Authenticate voert de hele controle in één aanroep uit. GetUserGroups geeft directe of geneste groepslidmaatschap terug via LDAP_MATCHING_RULE_IN_CHAIN, Search pagineert grote resultatensets automatisch, en elke publieke methode is geserialiseerd, zodat één instantie een multithreaded server kan bedienen.
TsgcSAMLServiceProvider maakt van je Delphi-webtoepassing een SAML 2.0 service provider voor Microsoft Entra ID, Okta, AD FS, Google Workspace, Keycloak en andere identity providers. GetMetadata produceert de metadata die je bij de IdP registreert en LoadIdPMetadata leest de hunne. GetAuthnRequestRedirectURL en GetAuthnRequestPostForm sturen de browser om aan te melden via de Redirect- of POST-binding, en ProcessResponse valideert wat terugkomt: de handtekening alleen tegen de vertrouwde IdPCertificates, precies één assertion om signature wrapping te verijdelen, dan issuer, audience, destination, InResponseTo, het geldigheidsvenster en een replaycache. Het resultaat komt terug als een TsgcSAMLResult met de NameID, de session index en de attributen.
TsgcHTTP_OIDC_Client breidt de OAuth2-client uit met OpenID Connect. Stel OIDCOptions.Issuer in en Discover vult de endpoints en de JWKSURI aan de hand van de providerconfiguratie. Start doorloopt het aanmelden via browser met PKCE en een nieuwe nonce, en valideert vervolgens de handtekening, issuer, audience, vervaldatum en nonce van het ID-token, waarbij alleen RS256, RS384, RS512, ES256 en ES384 worden geaccepteerd en nooit none of de HS-algoritmes. OnOIDCIDToken levert de claims, GetUserInfo geeft het profiel terug, en een thread-safe sleutelcache volgt sleutelrotatie zonder herstart. Aan serverzijde controleert sgcOIDC_ValidateIDToken de bearer-tokens die je REST API of WebSocket-server ontvangt tegen dezelfde cache.
TsgcMailOAuth2 haalt de tokens op die Microsoft 365 en Gmail voor mail verwachten. Kies de Provider (mopMicrosoft365, mopGmail of mopCustom) en de Protocols die je gebruikt, en het component vraagt de bijbehorende scopes op. Flow doorloopt het aanmelden via browser met PKCE en een loopback-redirect, of de device-code-flow voor services en consoles. Refresh vernieuwt het access token en OnTokensChanged wordt elke keer geactiveerd, zodat je het nieuwe refresh token kunt bewaren. GetXOAuth2 en GetOAuthBearer geven de SASL-strings terug voor AUTH XOAUTH2 en AUTH OAUTHBEARER, klaar voor Indy TIdSMTP, TIdIMAP4 en TIdPOP3 of elke andere mailbibliotheek.
TsgcMailOAuth2RFC 7628 · XOAUTH2 · Microsoft 365 · Gmail
Gebruiksscenario's
Authenticatieflows vanuit Delphi-code
Beide componenten zijn gewone niet-visuele componenten, dus ze passen in wat je toepassing al is: een VCL-desktopapp, een Windows-service, een Linux-daemon. Dit zijn de patronen die klanten bouwen, elk gekoppeld aan de eigenschap of methode die het aanstuurt.
SI
Aanmelden met Google of Microsoftauth2CodePKCE
Kant-en-klare presets voor Google en Microsoft configureren de authorize- en token-endpoints en scopes voor je.
Het apparaat toont een korte code, de gebruiker rondt het aanmelden af op zijn telefoon of laptop.
RF
Lange sessies zonder opnieuw te vragenRefresh
Wissel een refresh-token op de achtergrond in voor een nieuw access-token, zonder tussenkomst van de browser.
WS
Authenticeer je eigen WebSocket- & HTTP-API'sAuthentication.Token.JWT
De JWT Client ondertekent Bearer-tokens voor TsgcWebSocketClient, TsgcHTTP1Client en TsgcHTTP2Client automatisch.
SG
Zelfstandig tokens ondertekenenSign
Bouw en onderteken een JWT-string voor elke codebase, geen WebSocket- of HTTP-component nodig.
Hoe het werkt
Een browserovergave, een handtekening en een meegeleverde runtime
OAuth2 en JWT lossen verschillende problemen op: het ene onderhandelt een token met een externe server, het andere ondertekent er lokaal een, en dat is precies de reden om ze samen te verpakken: sgcAuth verbergt het verschil achter dezelfde componentconventies, met de meegeleverde sgcWebSockets Core runtime die eronder het loodgieterswerk doet.
OAuth2 is een browserovergave, daarna gewone HTTPS
Start opent de systeembrowser (of, voor Device Code, geeft je de gebruikerscode om te tonen) en een lokale HTTP-listener vanuit LocalServerOptions vangt de autorisatieredirect op. De inwisseling voor het access-token is een gewone HTTPS-POST via HTTPClientOptions, op de HTTP-clientstack van de Core runtime.
JWT is ondertekenen, geen netwerkverkeer
TsgcHTTP_JWT_Client opent nooit een socket. JWTOptions configureert de header, payload en het sleutelmateriaal, en Sign geeft het token in compact-serialisatie terug, HMAC, RSA of ECDSA, klaar om aan elk request van je eigen code te hangen.
De Core runtime zit in de doos
Standalone, de sgcWebSockets Core runtime is inbegrepen. Ze levert de HTTP/TLS-clientstack waar beide componenten doorheen POSTen en de JSON-parser die de antwoorden leest, en de volledige broncode ervan maakt net als al het andere deel uit van het pakket.
WebAuthn is het derde stuk, via sgcCustomIndy
Wachtwoordloos aanmelden wordt afgehandeld door TsgcWSAPIServer_WebAuthn, een sgcWebSockets Enterprise/All-Access-servercomponent die de gepatchte Indy-build nodig heeft die sgcCustomIndy levert. Het bestellen van sgcAuth voegt sgcCustomIndy automatisch toe aan je winkelmandje.
Snelstart
Een token ophalen, een token ondertekenen
Beide componenten volgen dezelfde opzet: configureer de opties, roep dan een methode aan. Ze compileren in Delphi 7 tot 13 en C++ Builder, en dezelfde eigenschappen zijn beschikbaar op .NET.
uses
sgcHTTP, sgcHTTP_OAuth_Types, sgcHTTP_JWT_Types;
var
OAuth2: TsgcHTTP_OAuth2_Client;
JWT: TsgcHTTP_JWT_Client;
begin// OAuth2: Authorization Code Grant met 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; // opent de browser; de redirect komt aan op de lokale server// JWT: onderteken een token voor je eigen 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;
Hetzelfde JWT-component koppelt rechtstreeks aan een WebSocket- of HTTP-client: stel Client.Authentication.Token.Enabled := True en Client.Authentication.Token.JWT := JWT in, en elk request gaat uit met een vers Bearer-token.
// include: sgcHTTP.hpp, sgcHTTP_OAuth_Types.hpp, sgcHTTP_JWT_Types.hpp// OAuth2: Authorization Code Grant met 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(); // opent de browser; de redirect komt aan op de lokale server// JWT: onderteken een token voor je eigen 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.");
}
Hetzelfde JWT-component koppelt rechtstreeks aan een WebSocket- of HTTP-client: stel Client->Authentication->Token->Enabled = true en Client->Authentication->Token->JWT = JWT in, en elk request gaat uit met een vers Bearer-token.
Platforms
Pure HTTPS en ondertekening, geen native bibliotheek
Geen van beide componenten is afhankelijk van iets buiten de HTTP-clientstack van de Core runtime en de crypto-primitieven van het platform, dus beide compileren en draaien overal waar Delphi dat ook doet.
sgcAuth wordt zelfstandig gelicentieerd, vanaf €149 voor één ontwikkelaar. Alle licenties bevatten volledige broncode, 1 jaar updates en 50% tot 70% verlengingskorting: 50% als je één pakket verlengt, 60% bij twee, 70% bij drie of meer. sgcAI, sgcMQ, sgcSocial, sgcCustomIndy, sgcAuth, sgcHTTP en sgcREST tellen elk als een pakket.
Bij het afrekenen staan twee regels: het recht op de sgcWebSockets Core runtime, dat op nul wordt gefactureerd, en het sgcAuth-pakket zelf. sgcCustomIndy wordt automatisch toegevoegd voor WebAuthn, verwijder het als je al een licentie bezit. Volledige prijsinformatie.
3,000+Ontwikkelaars
20+Jaar
761+Componenten
30+API-integraties
5Platformen
Niet-goed-geld-terug-garantie van 30 dagenNiet tevreden? Vraag binnen 30 dagen na aankoop een volledige terugbetaling aan. Bekijk het terugbetalingsbeleid
Lever authenticatie, geen tokenbibliotheek
OAuth2 en JWT vanuit native Delphi- en C++ Builder-code, met de runtime inbegrepen en volledige broncode in de doos. Download de All-Access-proefinstaller en zet vandaag nog beide componenten op een formulier.
Volledige WebRTC-media-engine voor Delphi en C++ Builder: audio- en video-oproepen, datakanalen en schermdelen, met STUN/TURN/ICE ingebouwd. Een add-on voor sgcWebSockets Enterprise.
De custom Indy-bibliotheek waarop sgcWebSockets Enterprise is gebouwd, verpakt als add-on. Vereist voor WebAuthn, automatisch toegevoegd aan sgcAuth-bestellingen.
Cryptografiebibliotheek voor Delphi en C++ Builder: symmetrische en asymmetrische versleuteling, hashing en sleutelbeheer. Gratis vanaf sgcWebSockets Standard, of standalone.