sgcAuth matrice delle funzionalità

Tutto quello che fa sgcAuth, mappato sui due componenti client, i grant type e le claim che implementano, e i componenti WebAuthn, TOTP, LDAP, SAML, OpenID Connect e Mail OAuth2 che il pacchetto sblocca insieme a sgcCustomIndy. Ogni funzionalità si comporta allo stesso modo in Delphi e in C++ Builder, e ogni licenza include il codice sorgente completo.

OAuth2

Cinque grant type, un solo componente

JWT

Firma, allega o verifica

WebAuthn

Passkey, tramite sgcCustomIndy

TOTP

Codici a due fattori e codici di recupero

LDAP

Accesso Active Directory su TLS

SAML

Single sign-on SAML 2.0

OpenID Connect

Accesso con validazione dell'ID token

Mail OAuth2

OAuth2 per SMTP, IMAP e POP3

Standard e piattaforme

Da Delphi 7 a 13, C++ Builder

sgcAuth è autosufficiente. Viene distribuito con il runtime sgcWebSockets Core incluso, quindi non è un componente aggiuntivo per i client OAuth2 e JWT.

Anche dentro sgcWebSockets. Sia il client OAuth2 sia il client JWT sono inclusi anche nelle edizioni di sgcWebSockets a partire dalla Standard. All-Access include tutto. sgcAuth è il package autonomo per i team che hanno bisogno solo dei client di autenticazione.

Sette componenti nella palette

Due client per i token e cinque componenti di identità, registrati sulla pagina della palette SGC Auth.

ComponenteClasseCompitoDescrizione
OAuth2 ClientTsgcHTTP_OAuth2_ClientOttieni un tokenGrant Authorization Code, PKCE, Client Credentials, Resource Owner Password e Device Code contro qualsiasi provider OAuth2/OIDC, con un server locale di redirect integrato.
JWT ClientTsgcHTTP_JWT_ClientFirma un tokenCrea, firma e verifica JSON Web Token, in autonomia o come sorgente del Bearer token per TsgcWebSocketClient, TsgcHTTP1Client e TsgcHTTP2Client.
TOTP AuthenticatorTsgcTOTPAuthenticatorVerifica un secondo fattoreSecret TOTP e HOTP, provisioning QR otpauth, verifica dei codici con protezione dai replay e codici di recupero monouso.
LDAP ClientTsgcLDAPClientVerifica una password di directoryAccesso LDAP v3 e Active Directory su LDAPS o StartTLS, appartenenza a gruppi annidati e ricerca paginata.
SAML Service ProviderTsgcSAMLServiceProviderSingle sign-onService provider SAML 2.0 per Entra ID, Okta, AD FS, Google Workspace e Keycloak, con validazione rigorosa di firma e assertion.
OpenID Connect ClientTsgcHTTP_OIDC_ClientAutentica un utenteDiscovery, accesso via browser con PKCE e nonce, validazione dell'ID token rispetto alle chiavi del provider ed endpoint userinfo.
Mail OAuth2TsgcMailOAuth2Autentica la postaAccess e refresh token per Microsoft 365 e Gmail, più le stringhe SASL XOAUTH2 e OAUTHBEARER per SMTP, IMAP e POP3.

Cinque grant type, un solo componente

TsgcHTTP_OAuth2_Client copre OAuth 2.0 (RFC 6749) end to end: avvia il flusso, intercetta il redirect, scambia il codice con un token e gestisce il token in seguito.

FunzionalitàAPINote
Authorization CodeOAuth2Options.GrantType := auth2CodeIl flusso standard per applicazioni web server-side affidabili che possono conservare un client secret.
Authorization Code + PKCEauth2CodePKCE (RFC 7636)Lo stesso flusso con una Proof Key for Code Exchange, per app native, mobile e single-page che non possono conservare un secret.
Client Credentialsauth2ClientCredentialsChiamate da server a server senza un utente nel mezzo: demoni e account di servizio.
Resource Owner Passwordauth2ResourceOwnerPasswordL'applicazione raccoglie direttamente la password dell'utente e la scambia con un token.
Device Codeauth2DeviceCode (RFC 8628)Per dispositivi con input limitato, smart TV, console multimediali, IoT: mostra un codice utente che la persona inserisce su un secondo dispositivo.
Identità del clientOAuth2Options.ClientId, ClientSecret, Username, PasswordDa impostare secondo le specifiche API del tuo provider; Username/Password coprono i provider che richiedono Basic Authentication sull'endpoint del token.
Endpoint del providerAuthorizationServerOptions.AuthURL, TokenURL, Scope, RevocationURL, IntrospectionURLGli URL e la lista di scope pubblicati nella documentazione OAuth2/OIDC del tuo provider.
Preset socialTsgcHTTP_OAuth2_Client_Google, TsgcHTTP_OAuth2_Client_MicrosoftDiscendenti già pronti che preconfigurano gli endpoint e gli scope di Google e Microsoft.
Listener di redirect localeLocalServerOptions.IP, Port, RedirectURLIl piccolo server HTTP che il componente avvia per ricevere il redirect del codice di autorizzazione; predefinito sulla porta 8080, oppure 0 per scegliere una porta casuale nelle app desktop.
Esegui il flussoStart, StopStart apre il browser di sistema (o emette il device code) e avvia il grant configurato; Stop lo interrompe e chiude il listener locale.
RefreshRefreshScambia un refresh token con un nuovo access token senza un altro passaggio dal browser.
Revoca e introspezioneRevoke (RFC 7009), Introspect (RFC 7662)Invalida un token, oppure interroga il suo stato e i suoi metadati presso il provider.
DPoPDPoPOptions, GenerateDPoPKeyPair, OnDPoPSignMateriale della chiave e firma per la Demonstrating Proof-of-Possession (RFC 9449), per i provider che legano i token a una coppia di chiavi.
Trasporto HTTPHTTPClientOptionsConfigurazione TLS e log per il client HTTP interno che invia le POST agli endpoint di token, revoca e introspezione.
Eventi del ciclo di vitaOnBeforeAuthorizeCode, OnAfterAuthorizeCode, OnBeforeAccessToken, OnAfterAccessToken, OnBeforeRefreshToken, OnAfterRefreshTokenCoppie prima/dopo attorno a ogni passo del flusso.
Eventi di erroreOnErrorAccessToken, OnErrorAuthorizeCode, OnErrorRefreshToken, OnErrorRevokeToken, OnErrorIntrospectTokenUno per ogni punto di fallimento del flusso, ciascuno con l'errore, la descrizione e l'URI del provider.
Eventi Device CodeOnDeviceCode, OnDeviceCodeExpiredConsegna il codice utente e l'URI di verifica da mostrare, e scatta se l'utente non completa l'autorizzazione in tempo.

Firma, allega o verifica

TsgcHTTP_JWT_Client implementa la RFC 7519 (JSON Web Token), la RFC 7515 (JWS) e la RFC 7516 (JWE) attraverso un'unica proprietà JWTOptions.

FunzionalitàAPINote
HeaderJWTOptions.Header.alg, typ, kidL'header JOSE. alg sceglie tra jwtHS256/384/512, jwtRS256/384/512, jwtES256/384/512 o i post-quantum jwtMLDSA44/jwtMLDSA65/jwtMLDSA87; i campi extra passano da Header.AddKeyValue.
Payload / claimJWTOptions.Payload.iss, sub, aud, exp, nbf, iat, jtiLe claim registrate dalla RFC 7519; le claim personalizzate si aggiungono con Payload.AddKeyValue.
Materiale della chiave di firmaJWTOptions.Algorithms.HS.Secret, RS.PrivateKey, ES.PrivateKey, MLDSA.PrivateKeySecret condiviso per HMAC, chiave privata in formato PEM per RSA o ECDSA, PEM PKCS#8 per ML-DSA, selezionati da Header.alg.
Firme post-quantumjwtMLDSA44, jwtMLDSA65, jwtMLDSA87Gli algoritmi JWS ML-DSA della RFC 9964, implementati in Pascal puro, quindi su questo percorso non interviene OpenSSL. Il client firma con JWTOptions.Algorithms.MLDSA.PrivateKey, un PEM PKCS#8; un server verifica con JWTOptions.Algorithms.MLDSA.PublicKey, un PEM SubjectPublicKeyInfo, una volta impostato JWTOptions.Algorithms.MLDSA.Enabled.
JSON Web Key ML-DSAsgcMLDSA_ExportPublicJWK, sgcMLDSA_ExportPrivateJWK, sgcMLDSA_ImportJWK, sgcMLDSA_ImportJWKAsPEMJSON Web Key AKP, per pubblicare una chiave ML-DSA in un JWKS o leggerne una da un provider.
Aggiornamento automaticoJWTOptions.RefreshTokenAfterSe maggiore di zero, Sign aggiorna iat e ricalcola exp automaticamente; 0 rigenera il token a ogni richiesta.
Firma indipendenteSignCrea, firma e restituisce il token codificato (header.payload.signature) come singola stringa, senza bisogno di un client HTTP o WebSocket.
Collegamento a un clientStart, Client.Authentication.Token.JWTStart firma il JWT configurato e lo consegna come Bearer token al componente ospite; impostalo una volta su Authentication.Token.JWT e ogni richiesta parte firmata.
Funziona conTsgcWebSocketClient, TsgcHTTP1Client, TsgcHTTP2ClientOgnuno dei tre accetta un TsgcHTTP_JWT_Client come sorgente del Bearer token tramite Authentication.Token.
Configurazione OpenSSLJWTOptions.OpenSSL_OptionsVersione API e percorso della libreria usati dagli algoritmi RS ed ES (APIVersion, LibPath, LibPathCustom, UnixSymLinks).

Accesso passwordless, con un pezzo in più

WebAuthn fa parte della proposta di sgcAuth, ma non è un terzo componente registrato in questo pacchetto. È servito dal server WebAuthn di sgcWebSockets, e richiede sgcCustomIndy sotto.

AmbitoDettaglio
Cos'èW3C Web Authentication Level 2 (WebAuthn): accesso passwordless con passkey e chiavi di sicurezza FIDO2, gestito da TsgcWSAPIServer_WebAuthn.
Dove si trovaTsgcWSAPIServer_WebAuthn è un componente lato server, parte di sgcWebSockets Enterprise e All-Access, non un client registrato da questo pacchetto.
Cosa richiedeLa build Indy modificata che sgcCustomIndy distribuisce come componente aggiuntivo per sgcWebSockets Core.
Come viene aggiuntoLa pagina d'ordine aggiunge sgcCustomIndy al tuo carrello automaticamente quando ordini sgcAuth. Possiedi già una licenza? Rimuovi la riga al pagamento, nessun costo extra in entrambi i casi.
Lato clientUn'applicazione JavaScript lato browser pilota la cerimonia WebAuthn; sgcHTML distribuisce un componente UI di login WebAuthn già pronto che si abbina al server.
PasskeyAccesso senza nome utente con credenziali discoverable, autofill delle passkey tramite conditional mediation, più passkey per utente, rilevamento sincronizzata o legata al dispositivo tramite BackupEligible e BackupState, e rilevamento di authenticator clonati.

Codici a due fattori, ciascuno accettato una sola volta

TsgcTOTPAuthenticator implementa TOTP (RFC 6238) e HOTP (RFC 4226), i codici mostrati da Google Authenticator, Microsoft Authenticator e qualsiasi altra app authenticator.

FunzionalitàAPINote
SecretGenerateSecret, SecretLengthUn secret Base32 casuale, 20 byte di default, da memorizzare con il record utente.
Provisioning QRGetProvisioningURI, IssuerCostruisce l'URI otpauth://totp/ con issuer, algoritmo, cifre e periodo, pronto per essere reso come codice QR.
Verifica un codiceVerifyCode, WindowAccetta lo step temporale corrente e Window step prima o dopo di esso, 1 di default, così un orologio del telefono sfasato di pochi secondi riesce comunque ad accedere.
Protezione dai replayVerifyCode con aLastTimeStepAccetta solo uno step temporale superiore all'ultimo utilizzato e restituisce lo step corrispondente, così un codice non può mai essere usato due volte.
Contatori HOTPGenerateHOTP, VerifyHOTPLa variante basata sul contatore per i token hardware, con una finestra di look-ahead che risincronizza il contatore in caso di successo.
Codici di recuperoGenerateRecoveryCodesRiempie qualsiasi TStrings con codici monouso univoci, il fallback per quando l'utente perde il dispositivo.
Algoritmi e cifreAlgorithm, Digits, PeriodHMAC-SHA1, il default supportato da tutte le app, HMAC-SHA256 o HMAC-SHA512, con codici da 6 a 8 cifre e qualsiasi periodo.

Accesso Active Directory su TLS

TsgcLDAPClient è un client LDAP v3 (RFC 4511) che autentica gli utenti su Active Directory o qualsiasi altra directory LDAP e ne legge i gruppi.

FunzionalitàAPINote
ConnessioneHost, Connect, BindDN, Password, BaseDNIl server della directory, l'account di servizio usato per le ricerche e la base delle ricerche di utenti e gruppi.
LDAPS e StartTLSSecurity, TLSOptionsldapsecLDAPS per TLS implicito sulla porta 636 o ldapsecStartTLS sulla porta 389. Uno StartTLS rifiutato chiude la connessione, il client non ripiega mai sul testo in chiaro.
Modalità di accessoAuthenticationMode, UserSearchFilterldapamUPN, ldapamDownLevel, ldapamSearchThenBind o ldapamDN trasformano il nome digitato nel bind name.
AutenticaAuthenticateVerifica nome utente e password in un'unica chiamata e restituisce il DN dell'utente.
Gruppi annidatiGetUserGroupsValori memberOf diretti, oppure ogni gruppo raggiunto attraverso altri gruppi con la regola Active Directory LDAP_MATCHING_RULE_IN_CHAIN.
Ricerca paginataSearch, PageSize, SizeLimit, TimeLimitSimple Paged Results viene usato automaticamente, 500 voci per pagina di default, e voci e referral tornano in una lista TsgcLDAPEntries.
Bind sicuriBind, WhoAmI, LastResultCode, LastErrorMessageUn DN con password vuota viene rifiutato senza contattare il server, chiudendo la falla dell'unauthenticated bind della RFC 4513.
ThreadOgni metodo pubblicoLe chiamate sono serializzate, così un'unica istanza può servire le richieste di login di un server HTTP o WebSocket multi-thread.

Single Sign-On SAML 2.0

TsgcSAMLServiceProvider trasforma un'applicazione web Delphi in un service provider SAML 2.0 per Microsoft Entra ID, Okta, AD FS, Google Workspace, Keycloak e altri identity provider.

FunzionalitàAPINote
Identità del service providerEntityID, AssertionConsumerServiceURLL'entity ID e l'URL ACS che riceve le risposte inviate dal browser.
Metadata in entrambe le direzioniGetMetadata, LoadIdPMetadataGetMetadata produce i metadata dell'SP da registrare nell'IdP. LoadIdPMetadata popola IdPEntityID, IdPSSOURL, IdPSSOBinding e IdPCertificates.
Binding Redirect e POSTGetAuthnRequestRedirectURL, GetAuthnRequestPostFormL'URL HTTP-Redirect con l'AuthnRequest compresso, oppure un form HTTP-POST a invio automatico.
Richieste firmateSignAuthnRequests, SPCertificate, SPPrivateKeyFirma l'AuthnRequest per gli identity provider che lo richiedono.
Solo chiavi fidateIdPCertificates, AllowSHA1Le firme sono verificate solo rispetto ai certificati IdP configurati, mai un certificato incorporato nel messaggio. RSA-SHA256, RSA-SHA384 e RSA-SHA512 con canonicalizzazione esclusiva, SHA-1 solo se consentito.
Protezione dal signature wrappingProcessResponseLa risposta deve contenere esattamente un'assertion come figlio diretto, e la firma deve fare riferimento a quell'elemento.
Controlli sull'assertionClockSkew, MaxAssertionAge, AllowIdPInitiatedIssuer, audience, destination, InResponseTo e la finestra di validità vengono convalidati, con una cache anti-replay degli assertion ID. L'accesso avviato dall'IdP resta disattivato finché non viene abilitato.
RisultatoTsgcSAMLResultNameID, NameIDFormat, SessionIndex, AuthnInstant, gli Attributes con i loro nomi descrittivi, e un ErrorMessage leggibile.

Accesso con qualsiasi provider OpenID

TsgcHTTP_OIDC_Client implementa OpenID Connect Core 1.0 sopra il client OAuth2, quindi loopback redirect, refresh token, DPoP, device code, revoca e introspection sono già inclusi.

FunzionalitàAPINote
DiscoveryOIDCOptions.Issuer, Discover, DiscoveryDocumentLegge la configurazione del provider e popola gli URL di authorization e token, JWKSURI, UserInfoEndpoint e EndSessionEndpoint.
AccessoStartApre il browser ed esegue il flusso Authorization Code tramite il server di redirect locale del client OAuth2.
PKCE e nonceOIDCOptions.UsePKCE, NoncePKCE è attivo di default e ogni accesso invia un nonce nuovo che l'ID token deve rispecchiare.
Validazione dell'ID tokenIDToken, IDTokenClaims, IDTokenValid, OnOIDCIDTokenVengono verificati firma, issuer, audience, scadenza con ClockSkew e nonce. Sono accettati solo RS256, RS384, RS512, ES256 ed ES384, none e gli algoritmi HS vengono sempre rifiutati.
Rotazione delle chiaviTsgcOIDCJWKS, RefetchIntervalUna cache thread safe delle chiavi di firma del provider. Un key id sconosciuto attiva un nuovo download, così la rotazione delle chiavi non richiede alcun riavvio.
Validazione lato serversgcOIDC_ValidateIDToken, OIDCOptions.AllowedTenantsConvalida i bearer token ricevuti dalla tua REST API o dal server WebSocket rispetto alla stessa cache delle chiavi, e limita le app multi-tenant di Entra ID alle organizzazioni che accetti.
UserinfoGetUserInfoRestituisce il JSON del profilo dell'utente che ha effettuato l'accesso.

OAuth2 per SMTP, IMAP e POP3

TsgcMailOAuth2 ottiene e rinnova i token che Microsoft 365 e Gmail richiedono per la posta, e li trasforma nelle stringhe SASL XOAUTH2 e OAUTHBEARER (RFC 7628) che il tuo client di posta invia.

FunzionalitàAPINote
Preset providerProvider, TenantId, ClientIdmopMicrosoft365 o mopGmail con gli endpoint corretti. mopCustom prende CustomAuthURL, CustomTokenURL, CustomDeviceAuthorizationURL e CustomScope.
Scope in base ai protocolliProtocols, GetScopeQualsiasi combinazione di mpSMTP, mpIMAP e mpPOP3 richiede gli scope corrispondenti, con offline_access su Microsoft 365.
Browser o device codeFlow, LocalServerOptions, OnDeviceCodemofAuthorizationCodePKCE apre il browser con un loopback redirect, mofDeviceCode è adatto a servizi e console.
Ciclo di vita del tokenStart, Refresh, AccessToken, RefreshToken, ExpiresAt, OnTokensChangedRefresh rinnova l'access token in modo sincrono e OnTokensChanged viene generato ogni volta, così puoi salvare il nuovo refresh token.
Stringhe SASLGetXOAuth2, GetOAuthBearerLe risposte iniziali in Base64 per AUTH XOAUTH2 e AUTH OAUTHBEARER. Le varianti Raw e le funzioni sgcGetXOAuth2 aiutano con il debug e altre fonti di token.
Indipendente dal trasportoHTTPClientOptionsIl componente non apre mai una connessione di posta. Usa Indy TIdSMTP, TIdIMAP4 o TIdPOP3, oppure qualsiasi libreria di posta in grado di inviare un comando SASL raw.

RFC, compilatori e target

Specifiche standard, e lo stesso sorgente su ogni compilatore supportato.

AmbitoDettaglio
Standard OAuth2OAuth 2.0 (RFC 6749), PKCE (RFC 7636), Device Authorization Grant (RFC 8628), Token Revocation (RFC 7009), Token Introspection (RFC 7662), DPoP (RFC 9449).
Standard JWTJSON Web Token (RFC 7519), JSON Web Signature (RFC 7515), JSON Web Encryption (RFC 7516), ML-DSA per JOSE (RFC 9964).
Standard WebAuthnWeb Authentication Level 2 (W3C), tramite il server WebAuthn di sgcWebSockets.
Standard di identitàTOTP (RFC 6238), HOTP (RFC 4226), LDAP v3 (RFC 4511), SAML 2.0 (OASIS), OpenID Connect Core 1.0, SASL OAUTHBEARER (RFC 7628) e XOAUTH2.
PiattaformeEntrambi i client sono HTTPS puro e firma locale, quindi ogni piattaforma Delphi è coperta: Windows Win32/Win64, Linux a 64 bit, macOS, iOS e Android.
CompilatoriDelphi e C++ Builder dalla versione 7 alla 13.
EdizioniIl client OAuth2 e il client JWT sono inclusi anche in sgcWebSockets a partire dalla Standard, i componenti WebAuthn, TOTP, LDAP, SAML, OpenID Connect e Mail OAuth2 in Enterprise, e All-Access include tutto.
LicenzeAutonomo. Il runtime sgcWebSockets Core è incluso e il codice sorgente completo fa parte della fornitura.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Costruisci con sgcAuth

Scarica la versione di prova gratuita e ottieni il tuo primo access token o JWT firmato da Delphi o C++ Builder.