sgcAuth matrice des fonctionnalités

Tout ce que fait sgcAuth, réparti sur les deux composants clients, les flux et les revendications qu'ils implémentent, et les composants WebAuthn, TOTP, LDAP, SAML, OpenID Connect et Mail OAuth2 que le pack débloque avec sgcCustomIndy. Chaque capacité fonctionne de la même façon en Delphi et en C++ Builder, et chaque licence est livrée avec le code source complet.

OAuth2

Cinq flux d'autorisation, un composant

JWT

Signer, attacher ou vérifier

WebAuthn

Passkeys, via sgcCustomIndy

TOTP

Codes de second facteur et codes de récupération

LDAP

Connexion Active Directory sur TLS

SAML

Authentification unique SAML 2.0

OpenID Connect

Connexion avec validation du jeton d'identité

Mail OAuth2

OAuth2 pour SMTP, IMAP et POP3

Standards et plateformes

Delphi 7 à 13, C++ Builder

sgcAuth est autonome. Il est livré avec le runtime sgcWebSockets Core inclus, ce n'est donc pas un complément pour les clients OAuth2 et JWT.

Aussi dans sgcWebSockets. Le client OAuth2 et le client JWT sont aussi livrés dans les éditions sgcWebSockets à partir de Standard. All-Access inclut tout. sgcAuth est le package autonome pour les équipes qui n'ont besoin que des clients d'authentification.

Sept composants de palette

Deux clients de tokens et cinq composants d'identité, enregistrés sur la page de palette SGC Auth.

ComposantClasseRôleDescription
Client OAuth2TsgcHTTP_OAuth2_ClientObtenir un tokenFlux Authorization Code, PKCE, Client Credentials, Resource Owner Password et Device Code auprès de tout fournisseur OAuth2/OIDC, avec un serveur de redirection local intégré.
Client JWTTsgcHTTP_JWT_ClientSigner un tokenConstruit, signe et vérifie des JSON Web Tokens, seul ou comme source du token Bearer pour TsgcWebSocketClient, TsgcHTTP1Client et TsgcHTTP2Client.
Authentificateur TOTPTsgcTOTPAuthenticatorVérifier un second facteurSecrets TOTP et HOTP, provisionnement QR otpauth, vérification de code avec protection anti-rejeu, et codes de récupération à usage unique.
Client LDAPTsgcLDAPClientVérifier un mot de passe d'annuaireConnexion LDAP v3 et Active Directory sur LDAPS ou StartTLS, appartenance aux groupes imbriqués et recherche paginée.
Fournisseur de services SAMLTsgcSAMLServiceProviderAuthentification uniqueFournisseur de services SAML 2.0 pour Entra ID, Okta, AD FS, Google Workspace et Keycloak, avec validation stricte de la signature et de l'assertion.
Client OpenID ConnectTsgcHTTP_OIDC_ClientConnecter un utilisateurDécouverte, connexion navigateur avec PKCE et nonce, validation du jeton d'identité face aux clés du fournisseur, et endpoint userinfo.
Mail OAuth2TsgcMailOAuth2Authentifier la messagerieJetons d'accès et de rafraîchissement pour Microsoft 365 et Gmail, plus les chaînes SASL XOAUTH2 et OAUTHBEARER pour SMTP, IMAP et POP3.

Cinq flux d'autorisation, un composant

TsgcHTTP_OAuth2_Client couvre OAuth 2.0 (RFC 6749) de bout en bout : il démarre le flux, capte la redirection, échange le code contre un token, puis gère le token ensuite.

CapacitéAPINotes
Authorization CodeOAuth2Options.GrantType := auth2CodeLe flux standard pour les applications web côté serveur de confiance, capables de conserver un secret client.
Authorization Code + PKCEauth2CodePKCE (RFC 7636)Le même flux avec une Proof Key for Code Exchange, pour les applications natives, mobiles et à page unique qui ne peuvent pas garder de secret.
Client Credentialsauth2ClientCredentialsAppels serveur à serveur sans utilisateur dans la boucle : démons et comptes de service.
Resource Owner Passwordauth2ResourceOwnerPasswordL'application collecte directement le mot de passe de l'utilisateur et l'échange contre un token.
Device Codeauth2DeviceCode (RFC 8628)Pour les appareils à saisie limitée, smart TV, consoles multimédias, IoT : affiche un code que la personne saisit sur un second appareil.
Identité du clientOAuth2Options.ClientId, ClientSecret, Username, PasswordÀ définir selon la spécification API de ton fournisseur ; Username/Password couvre les fournisseurs qui exigent une authentification Basic sur le point de terminaison de token.
Points de terminaison du fournisseurAuthorizationServerOptions.AuthURL, TokenURL, Scope, RevocationURL, IntrospectionURLLes URL et la liste de scopes publiées dans la documentation OAuth2/OIDC de ton fournisseur.
Préréglages sociauxTsgcHTTP_OAuth2_Client_Google, TsgcHTTP_OAuth2_Client_MicrosoftDescendants prêts à l'emploi qui préconfigurent les points de terminaison et les scopes de Google et Microsoft.
Écouteur de redirection localLocalServerOptions.IP, Port, RedirectURLLe petit serveur HTTP que le composant démarre pour recevoir la redirection du code d'autorisation ; par défaut sur le port 8080, ou 0 pour choisir un port aléatoire dans les applications de bureau.
Exécuter le fluxStart, StopStart ouvre le navigateur système (ou émet le code de l'appareil) et démarre le flux configuré ; Stop l'interrompt et ferme l'écouteur local.
RafraîchissementRefreshÉchange un refresh token contre un nouveau access token sans nouvel aller-retour navigateur.
Révocation et introspectionRevoke (RFC 7009), Introspect (RFC 7662)Invalide un token, ou interroge son état et ses métadonnées chez le fournisseur.
DPoPDPoPOptions, GenerateDPoPKeyPair, OnDPoPSignClé de preuve de possession (Demonstrating Proof-of-Possession, RFC 9449) et signature, pour les fournisseurs qui lient les tokens à une paire de clés.
Transport HTTPHTTPClientOptionsConfiguration TLS et journalisation pour le client HTTP interne qui envoie les requêtes POST aux points de terminaison de token, de révocation et d'introspection.
Événements de cycle de vieOnBeforeAuthorizeCode, OnAfterAuthorizeCode, OnBeforeAccessToken, OnAfterAccessToken, OnBeforeRefreshToken, OnAfterRefreshTokenPaires avant/après pour chaque étape du flux.
Événements d'erreurOnErrorAccessToken, OnErrorAuthorizeCode, OnErrorRefreshToken, OnErrorRevokeToken, OnErrorIntrospectTokenUn par point d'échec du flux, chacun transportant l'erreur, la description et l'URI du fournisseur.
Événements Device CodeOnDeviceCode, OnDeviceCodeExpiredDélivre le code utilisateur et l'URI de vérification à afficher, et se déclenche si la personne ne termine pas l'autorisation à temps.

Signer, attacher ou vérifier

TsgcHTTP_JWT_Client implémente la RFC 7519 (JSON Web Token), la RFC 7515 (JWS) et la RFC 7516 (JWE) à travers une seule propriété JWTOptions.

CapacitéAPINotes
En-têteJWTOptions.Header.alg, typ, kidL'en-tête JOSE. alg sélectionne jwtHS256/384/512, jwtRS256/384/512, jwtES256/384/512 ou les algorithmes post-quantiques jwtMLDSA44/jwtMLDSA65/jwtMLDSA87 ; les champs supplémentaires passent par Header.AddKeyValue.
Charge utile / revendicationsJWTOptions.Payload.iss, sub, aud, exp, nbf, iat, jtiLes revendications enregistrées par la RFC 7519 ; les revendications personnalisées s'ajoutent avec Payload.AddKeyValue.
Clé de signatureJWTOptions.Algorithms.HS.Secret, RS.PrivateKey, ES.PrivateKey, MLDSA.PrivateKeySecret partagé pour HMAC, clé privée au format PEM pour RSA ou ECDSA, PEM PKCS#8 pour ML-DSA, sélectionnée par Header.alg.
Signatures post-quantiquesjwtMLDSA44, jwtMLDSA65, jwtMLDSA87Les algorithmes JWS ML-DSA de la RFC 9964, implémentés en Pascal pur, aucun OpenSSL n'intervient sur ce chemin. Le client signe avec JWTOptions.Algorithms.MLDSA.PrivateKey, un PEM PKCS#8 ; un serveur vérifie avec JWTOptions.Algorithms.MLDSA.PublicKey, un PEM SubjectPublicKeyInfo, dès que JWTOptions.Algorithms.MLDSA.Enabled est activé.
JSON Web Keys ML-DSAsgcMLDSA_ExportPublicJWK, sgcMLDSA_ExportPrivateJWK, sgcMLDSA_ImportJWK, sgcMLDSA_ImportJWKAsPEMJSON Web Keys de type AKP, pour publier une clé ML-DSA dans un JWKS ou en lire une chez un fournisseur.
Rafraîchissement automatiqueJWTOptions.RefreshTokenAfterAu-dessus de zéro, Sign rafraîchit iat et recalcule exp automatiquement ; 0 régénère le token à chaque requête.
Signer seulSignConstruit, signe et renvoie le token encodé (header.payload.signature) sous forme d'une seule chaîne, sans client HTTP ni WebSocket.
Attacher à un clientStart, Client.Authentication.Token.JWTStart signe le JWT configuré et le délivre comme token Bearer au composant hôte ; définis-le une fois sur Authentication.Token.JWT et chaque requête part signée.
Fonctionne avecTsgcWebSocketClient, TsgcHTTP1Client, TsgcHTTP2ClientChacun des trois accepte un TsgcHTTP_JWT_Client comme source de token Bearer via Authentication.Token.
Configuration OpenSSLJWTOptions.OpenSSL_OptionsVersion d'API et chemin de bibliothèque utilisés par les algorithmes RS et ES (APIVersion, LibPath, LibPathCustom, UnixSymLinks).

Connexion sans mot de passe, avec une pièce de plus

WebAuthn fait partie de l'histoire sgcAuth, mais ce n'est pas un troisième composant enregistré dans ce pack. Il est servi par le serveur WebAuthn de sgcWebSockets, et il a besoin de sgcCustomIndy en dessous.

DomaineDétail
Ce que c'estW3C Web Authentication Level 2 (WebAuthn) : connexion sans mot de passe par passkeys et clés de sécurité FIDO2, portée par TsgcWSAPIServer_WebAuthn.
Où ça vitTsgcWSAPIServer_WebAuthn est un composant côté serveur, inclus dans sgcWebSockets Enterprise et All-Access, pas un client enregistré par ce pack.
Ce dont ça a besoinLa version Indy modifiée que sgcCustomIndy fournit comme complément pour sgcWebSockets Core.
Comment ça s'ajouteLa page de commande ajoute sgcCustomIndy à ton panier automatiquement quand tu commandes sgcAuth. Tu possèdes déjà une licence ? Retire la ligne au moment du paiement, sans surcoût dans les deux cas.
Côté clientUne application JavaScript côté navigateur pilote la cérémonie WebAuthn ; sgcHTML fournit un composant d'interface de connexion WebAuthn prêt à l'emploi, qui s'associe au serveur.
PasskeysConnexion sans nom d'utilisateur avec des credentials découvrables, saisie automatique des passkeys via la médiation conditionnelle, plusieurs passkeys par utilisateur, détection synchronisée ou liée à l'appareil via BackupEligible et BackupState, et détection d'authentificateur cloné.

Codes de second facteur, chacun accepté une seule fois

TsgcTOTPAuthenticator implémente TOTP (RFC 6238) et HOTP (RFC 4226), les codes affichés par Google Authenticator, Microsoft Authenticator et toute autre application authenticator.

CapacitéAPINotes
SecretsGenerateSecret, SecretLengthUn secret Base32 aléatoire, 20 octets par défaut, à stocker avec la fiche utilisateur.
Provisionnement QRGetProvisioningURI, IssuerConstruit l'URI otpauth://totp/ avec l'issuer, l'algorithme, les chiffres et la période, prête à être affichée comme code QR.
Vérifier un codeVerifyCode, WindowAccepte le pas de temps courant et Window pas avant ou après (1 par défaut), donc un téléphone dont l'horloge est décalée de quelques secondes se connecte quand même.
Protection anti-rejeuVerifyCode avec aLastTimeStepN'accepte qu'un pas de temps supérieur au dernier utilisé et retourne le pas correspondant, donc un code ne peut jamais être utilisé deux fois.
Compteurs HOTPGenerateHOTP, VerifyHOTPLa variante basée sur un compteur pour les tokens matériels, avec une fenêtre d'anticipation qui resynchronise le compteur en cas de succès.
Codes de récupérationGenerateRecoveryCodesRemplit n'importe quel TStrings avec des codes uniques à usage unique, la solution de secours quand l'utilisateur perd l'appareil.
Algorithmes et chiffresAlgorithm, Digits, PeriodHMAC-SHA1, le défaut pris en charge par toutes les applications, HMAC-SHA256 ou HMAC-SHA512, avec des codes de 6 à 8 chiffres et n'importe quelle période.

Connexion Active Directory sur TLS

TsgcLDAPClient est un client LDAP v3 (RFC 4511) qui authentifie les utilisateurs face à Active Directory ou tout autre annuaire LDAP et lit leurs groupes.

CapacitéAPINotes
ConnexionHost, Connect, BindDN, Password, BaseDNLe serveur d'annuaire, le compte de service utilisé pour les recherches, et la base des recherches d'utilisateurs et de groupes.
LDAPS et StartTLSSecurity, TLSOptionsldapsecLDAPS pour le TLS implicite sur le port 636 ou ldapsecStartTLS sur le port 389. Un StartTLS refusé ferme la connexion, le client ne bascule jamais en clair.
Modes de connexionAuthenticationMode, UserSearchFilterldapamUPN, ldapamDownLevel, ldapamSearchThenBind ou ldapamDN transforment le nom saisi en nom de bind.
AuthenticateAuthenticateVérifie le nom d'utilisateur et le mot de passe en un seul appel et retourne le DN de l'utilisateur.
Groupes imbriquésGetUserGroupsLes valeurs directes de memberOf, ou tous les groupes atteints via d'autres groupes avec la règle Active Directory LDAP_MATCHING_RULE_IN_CHAIN.
Recherche paginéeSearch, PageSize, SizeLimit, TimeLimitSimple Paged Results est utilisé automatiquement, 500 entrées par page par défaut, et les entrées et referrals reviennent dans une liste TsgcLDAPEntries.
Binds sécurisésBind, WhoAmI, LastResultCode, LastErrorMessageUn DN avec un mot de passe vide est refusé sans contacter le serveur, ce qui ferme la faille du bind non authentifié de la RFC 4513.
ThreadsChaque méthode publiqueLes appels sont sérialisés, donc une seule instance peut servir les demandes de connexion d'un serveur HTTP ou WebSocket multi-thread.

Authentification unique SAML 2.0

TsgcSAMLServiceProvider fait d'une application web Delphi un fournisseur de services SAML 2.0 pour Microsoft Entra ID, Okta, AD FS, Google Workspace, Keycloak et d'autres fournisseurs d'identité.

CapacitéAPINotes
Identité du fournisseur de servicesEntityID, AssertionConsumerServiceURLL'entity ID et l'URL ACS qui reçoit les réponses postées par le navigateur.
Métadonnées dans les deux sensGetMetadata, LoadIdPMetadataGetMetadata produit les métadonnées SP à enregistrer chez l'IdP. LoadIdPMetadata renseigne IdPEntityID, IdPSSOURL, IdPSSOBinding et IdPCertificates.
Bindings Redirect et POSTGetAuthnRequestRedirectURL, GetAuthnRequestPostFormL'URL HTTP-Redirect avec l'AuthnRequest compressé, ou un formulaire HTTP-POST à soumission automatique.
Requêtes signéesSignAuthnRequests, SPCertificate, SPPrivateKeySigne l'AuthnRequest pour les fournisseurs d'identité qui l'exigent.
Uniquement des clés de confianceIdPCertificates, AllowSHA1Les signatures ne sont vérifiées que face aux certificats IdP configurés, jamais un certificat intégré au message. RSA-SHA256, RSA-SHA384 et RSA-SHA512 avec canonicalisation exclusive, SHA-1 uniquement si autorisé.
Protection contre le signature wrappingProcessResponseLa réponse doit contenir exactement une assertion en enfant direct, et la signature doit référencer cet élément.
Vérifications de l'assertionClockSkew, MaxAssertionAge, AllowIdPInitiatedL'issuer, l'audience, la destination, InResponseTo et la fenêtre de validité sont validés, avec un cache anti-rejeu des IDs d'assertion. La connexion initiée par l'IdP reste désactivée tant qu'elle n'est pas activée.
RésultatTsgcSAMLResultNameID, NameIDFormat, SessionIndex, AuthnInstant, les Attributes avec leurs noms conviviaux, et un ErrorMessage lisible.

Connexion avec n'importe quel fournisseur OpenID

TsgcHTTP_OIDC_Client implémente OpenID Connect Core 1.0 par-dessus le client OAuth2, si bien que la redirection en boucle locale, les jetons de rafraîchissement, DPoP, le device code, la révocation et l'introspection sont tous inclus.

CapacitéAPINotes
DécouverteOIDCOptions.Issuer, Discover, DiscoveryDocumentLit la configuration du fournisseur et renseigne les URL d'autorisation et de token, JWKSURI, UserInfoEndpoint et EndSessionEndpoint.
ConnexionStartOuvre le navigateur et exécute le flux Authorization Code via le serveur de redirection local du client OAuth2.
PKCE et nonceOIDCOptions.UsePKCE, NoncePKCE est activé par défaut et chaque connexion envoie un nonce nouveau que le jeton d'identité doit renvoyer.
Validation du jeton d'identitéIDToken, IDTokenClaims, IDTokenValid, OnOIDCIDTokenSignature, issuer, audience, expiration avec ClockSkew, et nonce sont vérifiés. Seuls RS256, RS384, RS512, ES256 et ES384 sont acceptés, none et les algorithmes HS sont toujours rejetés.
Rotation des clésTsgcOIDCJWKS, RefetchIntervalUn cache thread-safe des clés de signature du fournisseur. Un identifiant de clé inconnu déclenche un nouveau téléchargement, donc la rotation des clés ne nécessite aucun redémarrage.
Validation côté serveursgcOIDC_ValidateIDToken, OIDCOptions.AllowedTenantsValide les jetons porteurs reçus par ton API REST ou ton serveur WebSocket face au même cache de clés, et restreint les applications Entra ID multi-tenants aux organisations que tu acceptes.
UserinfoGetUserInfoRetourne le JSON du profil de l'utilisateur connecté.

OAuth2 pour SMTP, IMAP et POP3

TsgcMailOAuth2 obtient et rafraîchit les jetons que Microsoft 365 et Gmail attendent pour la messagerie, et les transforme en chaînes SASL XOAUTH2 et OAUTHBEARER (RFC 7628) que ton client mail envoie.

CapacitéAPINotes
Préréglages de fournisseurProvider, TenantId, ClientIdmopMicrosoft365 ou mopGmail avec les bons endpoints. mopCustom prend CustomAuthURL, CustomTokenURL, CustomDeviceAuthorizationURL et CustomScope.
Scopes issus des protocolesProtocols, GetScopeN'importe quelle combinaison de mpSMTP, mpIMAP et mpPOP3 demande les scopes correspondants, avec offline_access sur Microsoft 365.
Navigateur ou device codeFlow, LocalServerOptions, OnDeviceCodemofAuthorizationCodePKCE ouvre le navigateur avec une redirection en boucle locale, mofDeviceCode convient aux services et consoles.
Cycle de vie du jetonStart, Refresh, AccessToken, RefreshToken, ExpiresAt, OnTokensChangedRefresh renouvelle le jeton d'accès de façon synchrone et OnTokensChanged se déclenche à chaque fois, pour que tu conserves le nouveau jeton de rafraîchissement.
Chaînes SASLGetXOAuth2, GetOAuthBearerLes réponses initiales en Base64 pour AUTH XOAUTH2 et AUTH OAUTHBEARER. Les variantes Raw et les fonctions sgcGetXOAuth2 aident au débogage et avec d'autres sources de jetons.
Indépendant du transportHTTPClientOptionsLe composant n'ouvre jamais de connexion mail. Utilise Indy TIdSMTP, TIdIMAP4 ou TIdPOP3, ou toute autre bibliothèque mail.

RFC, compilateurs et cibles

Des spécifications standardisées, et le même source sur chaque compilateur pris en charge.

DomaineDétail
Standards OAuth2OAuth 2.0 (RFC 6749), PKCE (RFC 7636), Device Authorization Grant (RFC 8628), Token Revocation (RFC 7009), Token Introspection (RFC 7662), DPoP (RFC 9449).
Standards JWTJSON Web Token (RFC 7519), JSON Web Signature (RFC 7515), JSON Web Encryption (RFC 7516), ML-DSA pour JOSE (RFC 9964).
Standard WebAuthnWeb Authentication Level 2 (W3C), via le serveur WebAuthn de sgcWebSockets.
Standards d'identitéTOTP (RFC 6238), HOTP (RFC 4226), LDAP v3 (RFC 4511), SAML 2.0 (OASIS), OpenID Connect Core 1.0, SASL OAUTHBEARER (RFC 7628) et XOAUTH2.
PlateformesLes deux clients ne font que du HTTPS pur et de la signature locale, chaque plateforme Delphi est donc couverte : Windows Win32/Win64, Linux 64 bits, macOS, iOS et Android.
CompilateursDelphi et C++ Builder 7 à 13.
ÉditionsLe client OAuth2 et le client JWT sont aussi livrés dans sgcWebSockets à partir de Standard, les composants WebAuthn, TOTP, LDAP, SAML, OpenID Connect et Mail OAuth2 dans Enterprise, et All-Access inclut tout.
LicenceAutonome. Le runtime sgcWebSockets Core est inclus et le code source complet est fourni.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Construis avec sgcAuth

Télécharge l'essai gratuit et obtiens ton premier access token ou JWT signé depuis Delphi ou C++ Builder.