sgcAuth Funktionsmatrix

Alles, was sgcAuth kann, aufgeschlüsselt nach den zwei Client-Komponenten, den Grant-Typen und Claims, die sie umsetzen, und den Komponenten WebAuthn, TOTP, LDAP, SAML, OpenID Connect und Mail OAuth2, die das Paket zusammen mit sgcCustomIndy freischaltet. Jede Fähigkeit arbeitet in Delphi und C++ Builder identisch, und jede Lizenz enthält den vollständigen Quellcode.

OAuth2

Fünf Grant-Typen, eine Komponente

JWT

Signieren, anhängen oder verifizieren

WebAuthn

Passkeys, über sgcCustomIndy

TOTP

Zweitfaktor-Codes und Wiederherstellungscodes

LDAP

Active-Directory-Anmeldung über TLS

SAML

SAML-2.0-Single-Sign-On

OpenID Connect

Anmeldung mit ID-Token-Validierung

Mail OAuth2

OAuth2 für SMTP, IMAP und POP3

Standards & Plattformen

Delphi 7 bis 13, C++ Builder

sgcAuth ist in sich geschlossen. Es bringt die sgcWebSockets Core Runtime mit, es ist also kein Add-on für den OAuth2- und den JWT-Client.

Auch in sgcWebSockets enthalten. Sowohl der OAuth2 Client als auch der JWT Client sind außerdem ab der Standard-Edition in sgcWebSockets enthalten. All-Access enthält alles. sgcAuth ist das eigenständige Paket für Teams, die nur die Authentifizierungs-Clients brauchen.

Sieben Paletten-Komponenten

Zwei Token-Clients und fünf Identitätskomponenten, registriert auf der Palettenseite SGC Auth.

KomponenteKlasseAufgabeBeschreibung
OAuth2 ClientTsgcHTTP_OAuth2_ClientEin Token holenAuthorization Code, PKCE, Client Credentials, Resource Owner Password und Device Code gegen jeden OAuth2-/OIDC-Anbieter, mit eingebautem lokalem Redirect-Server.
JWT ClientTsgcHTTP_JWT_ClientEin Token signierenErstellt, signiert und verifiziert JSON Web Tokens, eigenständig oder als Bearer-Token-Quelle für TsgcWebSocketClient, TsgcHTTP1Client und TsgcHTTP2Client.
TOTP AuthenticatorTsgcTOTPAuthenticatorEinen zweiten Faktor prüfenTOTP- und HOTP-Geheimnisse, otpauth-QR-Bereitstellung, Code-Verifizierung mit Replay-Schutz und Einmal-Wiederherstellungscodes.
LDAP ClientTsgcLDAPClientEin Verzeichniskennwort prüfenLDAP v3 und Active-Directory-Anmeldung über LDAPS oder StartTLS, verschachtelte Gruppenmitgliedschaft und paginierte Suche.
SAML Service ProviderTsgcSAMLServiceProviderSingle Sign-OnSAML-2.0-Service-Provider für Entra ID, Okta, AD FS, Google Workspace und Keycloak, mit strikter Signatur- und Assertion-Validierung.
OpenID Connect ClientTsgcHTTP_OIDC_ClientEinen Benutzer anmeldenDiscovery, Browser-Anmeldung mit PKCE und Nonce, ID-Token-Validierung gegen die Schlüssel des Providers und den Userinfo-Endpunkt.
Mail OAuth2TsgcMailOAuth2Mail authentifizierenAccess- und Refresh-Token für Microsoft 365 und Gmail sowie die SASL-Strings XOAUTH2 und OAUTHBEARER für SMTP, IMAP und POP3.

Fünf Grant-Typen, eine Komponente

TsgcHTTP_OAuth2_Client deckt OAuth 2.0 (RFC 6749) durchgängig ab: Sie startet den Flow, fängt die Weiterleitung ab, tauscht den Code gegen ein Token und verwaltet das Token danach.

FähigkeitAPIHinweise
Authorization CodeOAuth2Options.GrantType := auth2CodeDer Standard-Flow für vertrauenswürdige serverseitige Webanwendungen, die ein Client-Secret halten können.
Authorization Code + PKCEauth2CodePKCE (RFC 7636)Derselbe Flow mit einem Proof Key for Code Exchange, für native, mobile und Single-Page-Anwendungen, die kein Secret aufbewahren können.
Client Credentialsauth2ClientCredentialsServer-zu-Server-Aufrufe ohne beteiligten Benutzer: Daemons und Service-Konten.
Resource Owner Passwordauth2ResourceOwnerPasswordDie Anwendung erfasst das Passwort des Benutzers direkt und tauscht es gegen ein Token.
Device Codeauth2DeviceCode (RFC 8628)Für eingabebeschränkte Geräte, Smart-TVs, Media-Konsolen, IoT: zeigt einen Benutzercode, den die Person auf einem zweiten Gerät eingibt.
Client-IdentitätOAuth2Options.ClientId, ClientSecret, Username, PasswordSetze sie gemäß der API-Spezifikation deines Anbieters; Username/Password decken Anbieter ab, die Basic Authentication am Token-Endpunkt verlangen.
Anbieter-EndpunkteAuthorizationServerOptions.AuthURL, TokenURL, Scope, RevocationURL, IntrospectionURLDie URLs und die Scope-Liste, die die OAuth2-/OIDC-Dokumentation deines Anbieters veröffentlicht.
Social-PresetsTsgcHTTP_OAuth2_Client_Google, TsgcHTTP_OAuth2_Client_MicrosoftFertige Abkömmlinge, die die Google- und Microsoft-Endpunkte sowie -Scopes vorkonfigurieren.
Lokaler Redirect-ListenerLocalServerOptions.IP, Port, RedirectURLDer kleine HTTP-Server, den die Komponente startet, um die Authorization-Code-Weiterleitung zu empfangen; Standard ist Port 8080, oder 0, um für Desktop-Anwendungen einen zufälligen Port zu wählen.
Den Flow ausführenStart, StopStart öffnet den Systembrowser (oder stellt den Device Code aus) und beginnt den konfigurierten Grant; Stop bricht ihn ab und beendet den lokalen Listener.
RefreshRefreshTauscht ein Refresh-Token gegen ein neues Access-Token, ohne einen weiteren Browser-Roundtrip.
Widerrufen & IntrospektionRevoke (RFC 7009), Introspect (RFC 7662)Ein Token ungültig machen, oder seinen Status und seine Metadaten beim Anbieter abfragen.
DPoPDPoPOptions, GenerateDPoPKeyPair, OnDPoPSignDemonstrating Proof-of-Possession (RFC 9449) Schlüsselmaterial und Signierung, für Anbieter, die Tokens an ein Schlüsselpaar binden.
HTTP-TransportHTTPClientOptionsTLS- und Logging-Konfiguration für den internen HTTP-Client, der an die Token-, Revocation- und Introspection-Endpunkte POSTet.
Lifecycle-EreignisseOnBeforeAuthorizeCode, OnAfterAuthorizeCode, OnBeforeAccessToken, OnAfterAccessToken, OnBeforeRefreshToken, OnAfterRefreshTokenVorher-/Nachher-Paare rund um jeden Schritt des Flows.
Fehler-EreignisseOnErrorAccessToken, OnErrorAuthorizeCode, OnErrorRefreshToken, OnErrorRevokeToken, OnErrorIntrospectTokenJe eines pro Fehlerpunkt im Flow, jedes mit dem Fehler, der Beschreibung und der URI des Anbieters.
Device-Code-EreignisseOnDeviceCode, OnDeviceCodeExpiredLiefert den anzuzeigenden Benutzercode und die Verifizierungs-URI, und feuert, wenn der Benutzer die Autorisierung nicht rechtzeitig abschließt.

Signieren, anhängen oder verifizieren

TsgcHTTP_JWT_Client implementiert RFC 7519 (JSON Web Token), RFC 7515 (JWS) und RFC 7516 (JWE) über eine einzige JWTOptions-Eigenschaft.

FähigkeitAPIHinweise
HeaderJWTOptions.Header.alg, typ, kidDer JOSE-Header. alg wählt jwtHS256/384/512, jwtRS256/384/512, jwtES256/384/512 oder die Post-Quanten-Varianten jwtMLDSA44/jwtMLDSA65/jwtMLDSA87; zusätzliche Felder gehen über Header.AddKeyValue.
Payload / ClaimsJWTOptions.Payload.iss, sub, aud, exp, nbf, iat, jtiDie registrierten RFC-7519-Claims; benutzerdefinierte Claims werden mit Payload.AddKeyValue ergänzt.
Signierschlüssel-MaterialJWTOptions.Algorithms.HS.Secret, RS.PrivateKey, ES.PrivateKey, MLDSA.PrivateKeyGemeinsames Secret für HMAC, PEM-kodierter privater Schlüssel für RSA oder ECDSA, PKCS#8-PEM für ML-DSA, ausgewählt über Header.alg.
Post-Quanten-SignaturenjwtMLDSA44, jwtMLDSA65, jwtMLDSA87Die ML-DSA-JWS-Algorithmen aus RFC 9964, in reinem Pascal implementiert, sodass auf diesem Weg kein OpenSSL beteiligt ist. Der Client signiert mit JWTOptions.Algorithms.MLDSA.PrivateKey, einem PKCS#8-PEM; ein Server verifiziert mit JWTOptions.Algorithms.MLDSA.PublicKey, einem SubjectPublicKeyInfo-PEM, sobald JWTOptions.Algorithms.MLDSA.Enabled gesetzt ist.
ML-DSA JSON Web KeyssgcMLDSA_ExportPublicJWK, sgcMLDSA_ExportPrivateJWK, sgcMLDSA_ImportJWK, sgcMLDSA_ImportJWKAsPEMAKP JSON Web Keys, um einen ML-DSA-Schlüssel in einem JWKS zu veröffentlichen oder einen von einem Anbieter zu lesen.
Auto-RefreshJWTOptions.RefreshTokenAfterIst der Wert größer als null, aktualisiert Sign iat automatisch und berechnet exp neu; 0 erzeugt das Token bei jeder Anfrage neu.
Eigenständig signierenSignErstellt, signiert und liefert das kodierte Token (header.payload.signature) als einzelne Zeichenfolge zurück, ohne HTTP- oder WebSocket-Client.
An einen Client anhängenStart, Client.Authentication.Token.JWTStart signiert das konfigurierte JWT und liefert es der Host-Komponente als Bearer-Token; einmal auf Authentication.Token.JWT gesetzt, geht jede Anfrage signiert hinaus.
Funktioniert mitTsgcWebSocketClient, TsgcHTTP1Client, TsgcHTTP2ClientJede der drei Komponenten akzeptiert einen TsgcHTTP_JWT_Client als Bearer-Token-Quelle über Authentication.Token.
OpenSSL-KonfigurationJWTOptions.OpenSSL_OptionsAPI-Version und Bibliothekspfad, die von den RS- und ES-Algorithmen verwendet werden (APIVersion, LibPath, LibPathCustom, UnixSymLinks).

Passwortlose Anmeldung, mit einem Stück mehr

WebAuthn ist Teil der sgcAuth-Geschichte, aber es ist keine dritte registrierte Komponente in diesem Paket. Es wird vom sgcWebSockets-WebAuthn-Server bedient, und es braucht sgcCustomIndy darunter.

BereichDetail
Was es istW3C Web Authentication Level 2 (WebAuthn): passwortlose Anmeldung mit Passkeys und FIDO2-Sicherheitsschlüsseln, unterstützt von TsgcWSAPIServer_WebAuthn.
Wo es lebtTsgcWSAPIServer_WebAuthn ist eine serverseitige Komponente, Teil von sgcWebSockets Enterprise und All-Access, kein von diesem Paket registrierter Client.
Was es brauchtDen gepatchten Indy-Build, den sgcCustomIndy als Add-on für sgcWebSockets Core liefert.
Wie es hinzugefügt wirdDie Bestellseite fügt sgcCustomIndy beim Bestellen von sgcAuth automatisch zu deinem Warenkorb hinzu. Besitzt du bereits eine Lizenz? Entferne die Position beim Checkout, in beiden Fällen entstehen keine Zusatzkosten.
Client-SeiteEine browserseitige JavaScript-Anwendung steuert die WebAuthn-Zeremonie; sgcHTML liefert eine fertige WebAuthn-Login-UI-Komponente, die mit dem Server zusammenspielt.
PasskeysAnmeldung ohne Benutzernamen mit erkennbaren Anmeldedaten, Passkey-Autofill über bedingte Vermittlung, mehrere Passkeys pro Benutzer, Erkennung synchronisierter oder gerätegebundener Passkeys über BackupEligible und BackupState, sowie Erkennung geklonter Authentifikatoren.

Zweitfaktor-Codes, jeder nur einmal akzeptiert

TsgcTOTPAuthenticator implementiert TOTP (RFC 6238) und HOTP (RFC 4226), die Codes, die Google Authenticator, Microsoft Authenticator und jede andere Authenticator-App anzeigen.

FunktionAPIHinweise
GeheimnisseGenerateSecret, SecretLengthEin zufälliges Base32-Geheimnis, standardmäßig 20 Bytes, zum Speichern mit dem Benutzerdatensatz.
QR-BereitstellungGetProvisioningURI, IssuerErstellt die otpauth://totp/-URI mit Issuer, Algorithmus, Ziffern und Periode, bereit zur Darstellung als QR-Code.
Code verifizierenVerifyCode, WindowAkzeptiert den aktuellen Zeitschritt sowie Window Schritte davor oder danach, standardmäßig 1, sodass eine Telefonuhr mit wenigen Sekunden Abweichung weiterhin funktioniert.
Replay-SchutzVerifyCode mit aLastTimeStepAkzeptiert nur einen Zeitschritt, der größer ist als der zuletzt verwendete, und gibt den passenden Schritt zurück, sodass ein Code nie zweimal verwendet werden kann.
HOTP-ZählerGenerateHOTP, VerifyHOTPDie zählerbasierte Variante für Hardware-Token, mit einem Vorlauffenster, das den Zähler bei Erfolg neu synchronisiert.
WiederherstellungscodesGenerateRecoveryCodesFüllt eine beliebige TStrings mit eindeutigen Einmalcodes, dem Ausweg, wenn der Benutzer das Gerät verliert.
Algorithmen und ZiffernAlgorithm, Digits, PeriodHMAC-SHA1, der Standard, den jede App unterstützt, HMAC-SHA256 oder HMAC-SHA512, mit Codes von 6 bis 8 Ziffern und beliebiger Periode.

Active-Directory-Anmeldung über TLS

TsgcLDAPClient ist ein LDAP-v3-Client (RFC 4511), der Benutzer gegen Active Directory oder ein beliebiges anderes LDAP-Verzeichnis authentifiziert und deren Gruppen ausliest.

FunktionAPIHinweise
VerbindungHost, Connect, BindDN, Password, BaseDNDer Verzeichnisserver, das für Suchen verwendete Dienstkonto und die Basis der Benutzer- und Gruppensuchen.
LDAPS und StartTLSSecurity, TLSOptionsldapsecLDAPS für implizites TLS auf Port 636 oder ldapsecStartTLS auf Port 389. Ein abgelehntes StartTLS schließt die Verbindung, der Client fällt nie auf Klartext zurück.
AnmeldemodiAuthenticationMode, UserSearchFilterldapamUPN, ldapamDownLevel, ldapamSearchThenBind oder ldapamDN wandeln den eingegebenen Namen in den Bind-Namen um.
AuthenticateAuthenticatePrüft Benutzername und Kennwort in einem Aufruf und liefert den DN des Benutzers zurück.
Verschachtelte GruppenGetUserGroupsDirekte memberOf-Werte, oder jede über andere Gruppen erreichbare Gruppe mit der Active-Directory-Regel LDAP_MATCHING_RULE_IN_CHAIN.
Paginierte SucheSearch, PageSize, SizeLimit, TimeLimitSimple Paged Results werden automatisch verwendet, standardmäßig 500 Einträge pro Seite, und die Einträge und Referrals kommen in einer TsgcLDAPEntries-Liste zurück.
Sichere BindsBind, WhoAmI, LastResultCode, LastErrorMessageEin DN mit leerem Kennwort wird abgelehnt, ohne den Server zu kontaktieren, und schließt damit die unauthentifizierte Bind-Lücke aus RFC 4513.
ThreadsJede öffentliche MethodeAufrufe sind serialisiert, sodass eine Instanz die Login-Anfragen eines mehrfädigen HTTP- oder WebSocket-Servers bedienen kann.

SAML-2.0-Single-Sign-On

TsgcSAMLServiceProvider macht eine Delphi-Webanwendung zu einem SAML-2.0-Service-Provider für Microsoft Entra ID, Okta, AD FS, Google Workspace, Keycloak und andere Identity Provider.

FunktionAPIHinweise
Service-Provider-IdentitätEntityID, AssertionConsumerServiceURLDie Entity-ID und die ACS-URL, die die vom Browser gesendeten Antworten empfängt.
Metadaten in beide RichtungenGetMetadata, LoadIdPMetadataGetMetadata erzeugt die SP-Metadaten zur Registrierung beim IdP. LoadIdPMetadata füllt IdPEntityID, IdPSSOURL, IdPSSOBinding und IdPCertificates.
Redirect- und POST-BindingsGetAuthnRequestRedirectURL, GetAuthnRequestPostFormDie HTTP-Redirect-URL mit der komprimierten AuthnRequest, oder ein automatisch abgesendetes HTTP-POST-Formular.
Signierte RequestsSignAuthnRequests, SPCertificate, SPPrivateKeySigniert die AuthnRequest für Identity Provider, die dies verlangen.
Nur vertrauenswürdige SchlüsselIdPCertificates, AllowSHA1Signaturen werden ausschließlich gegen die konfigurierten IdP-Zertifikate geprüft, nie gegen ein in der Nachricht eingebettetes Zertifikat. RSA-SHA256, RSA-SHA384 und RSA-SHA512 mit exklusiver Kanonisierung, SHA-1 nur wenn erlaubt.
Schutz vor Signature WrappingProcessResponseDie Antwort darf als direktes Kind genau eine Assertion enthalten, und die Signatur muss sich auf dieses Element beziehen.
Assertion-PrüfungenClockSkew, MaxAssertionAge, AllowIdPInitiatedIssuer, Audience, Destination, InResponseTo und das Gültigkeitsfenster werden validiert, mit einem Replay-Cache der Assertion-IDs. IdP-initiiertes Login bleibt deaktiviert, bis es aktiviert wird.
ErgebnisTsgcSAMLResultNameID, NameIDFormat, SessionIndex, AuthnInstant, die Attributes mit ihren Anzeigenamen und eine lesbare ErrorMessage.

Anmeldung mit jedem OpenID-Provider

TsgcHTTP_OIDC_Client implementiert OpenID Connect Core 1.0 auf Basis des OAuth2-Clients, sodass der Loopback-Redirect, Refresh Token, DPoP, Device Code, Widerruf und Introspection direkt mitgeliefert werden.

FunktionAPIHinweise
DiscoveryOIDCOptions.Issuer, Discover, DiscoveryDocumentLiest die Provider-Konfiguration und füllt die Autorisierungs- und Token-URLs, JWKSURI, UserInfoEndpoint und EndSessionEndpoint.
AnmeldungStartÖffnet den Browser und führt den Authorization-Code-Ablauf über den lokalen Redirect-Server des OAuth2-Clients aus.
PKCE und NonceOIDCOptions.UsePKCE, NoncePKCE ist standardmäßig aktiv, und jede Anmeldung sendet eine frische Nonce, die das ID-Token widerspiegeln muss.
ID-Token-ValidierungIDToken, IDTokenClaims, IDTokenValid, OnOIDCIDTokenSignatur, Issuer, Audience, Ablaufzeit mit ClockSkew und Nonce werden geprüft. Nur RS256, RS384, RS512, ES256 und ES384 werden akzeptiert, none und die HS-Algorithmen werden stets abgelehnt.
SchlüsselrotationTsgcOIDCJWKS, RefetchIntervalEin threadsicherer Cache der Signaturschlüssel des Providers. Eine unbekannte Key-ID löst einen neuen Download aus, sodass eine Schlüsselrotation keinen Neustart erfordert.
Serverseitige ValidierungsgcOIDC_ValidateIDToken, OIDCOptions.AllowedTenantsValidiert die Bearer-Token, die deine REST-API oder dein WebSocket-Server erhält, gegen denselben Schlüssel-Cache, und beschränkt Multi-Tenant-Entra-ID-Apps auf die zugelassenen Organisationen.
UserinfoGetUserInfoLiefert das Profil-JSON des angemeldeten Benutzers.

OAuth2 für SMTP, IMAP und POP3

TsgcMailOAuth2 holt und erneuert die Token, die Microsoft 365 und Gmail für Mail erwarten, und wandelt sie in die SASL-Strings XOAUTH2 und OAUTHBEARER (RFC 7628) um, die dein Mail-Client sendet.

FunktionAPIHinweise
Provider-PresetsProvider, TenantId, ClientIdmopMicrosoft365 oder mopGmail mit den passenden Endpunkten. mopCustom nimmt CustomAuthURL, CustomTokenURL, CustomDeviceAuthorizationURL und CustomScope entgegen.
Scopes aus den ProtokollenProtocols, GetScopeJede Kombination aus mpSMTP, mpIMAP und mpPOP3 fordert die passenden Scopes an, bei Microsoft 365 inklusive offline_access.
Browser oder Device CodeFlow, LocalServerOptions, OnDeviceCodemofAuthorizationCodePKCE öffnet den Browser mit einem Loopback-Redirect, mofDeviceCode eignet sich für Dienste und Konsolen.
Token-LebenszyklusStart, Refresh, AccessToken, RefreshToken, ExpiresAt, OnTokensChangedRefresh erneuert das Access Token synchron, und OnTokensChanged feuert bei jeder Änderung, sodass du das neue Refresh Token speichern kannst.
SASL-StringsGetXOAuth2, GetOAuthBearerDie Base64-Initialantworten für AUTH XOAUTH2 und AUTH OAUTHBEARER. Die Raw-Varianten und die sgcGetXOAuth2-Funktionen helfen beim Debugging und mit anderen Token-Quellen.
TransportunabhängigHTTPClientOptionsDie Komponente öffnet nie eine Mailverbindung. Verwende Indy TIdSMTP, TIdIMAP4 oder TIdPOP3, oder jede Mail-Bibliothek, die einen rohen SASL-Befehl senden kann.

RFCs, Compiler und Zielplattformen

Standardisierte Spezifikationen, und derselbe Quellcode über jeden unterstützten Compiler hinweg.

BereichDetail
OAuth2-StandardsOAuth 2.0 (RFC 6749), PKCE (RFC 7636), Device Authorization Grant (RFC 8628), Token Revocation (RFC 7009), Token Introspection (RFC 7662), DPoP (RFC 9449).
JWT-StandardsJSON Web Token (RFC 7519), JSON Web Signature (RFC 7515), JSON Web Encryption (RFC 7516), ML-DSA für JOSE (RFC 9964).
WebAuthn-StandardWeb Authentication Level 2 (W3C), über den sgcWebSockets-WebAuthn-Server.
IdentitätsstandardsTOTP (RFC 6238), HOTP (RFC 4226), LDAP v3 (RFC 4511), SAML 2.0 (OASIS), OpenID Connect Core 1.0, SASL OAUTHBEARER (RFC 7628) und XOAUTH2.
PlattformenBeide Clients sind reines HTTPS und lokales Signieren, jede Delphi-Plattform ist also abgedeckt: Windows Win32/Win64, Linux 64-Bit, macOS, iOS und Android.
CompilerDelphi und C++ Builder 7 bis 13.
EditionenDer OAuth2 Client und der JWT Client sind außerdem ab der Standard-Edition in sgcWebSockets enthalten, die Komponenten WebAuthn, TOTP, LDAP, SAML, OpenID Connect und Mail OAuth2 in Enterprise, und All-Access enthält alles.
LizenzierungEigenständig. Die sgcWebSockets Core Runtime ist mitgeliefert und der vollständige Quellcode ist enthalten.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Baue mit sgcAuth

Lade die kostenlose Testversion herunter und hole dir dein erstes Access-Token oder signiertes JWT aus Delphi oder C++ Builder.